いま型理論を勉強中です。
ちょっと古いドキュメントですがおもしろい内容だったのでメモ。
CやPascalのような手続き型言語では、変数宣言の際に型を指定するが、
ここでの型は、その型がどれくらいのメモリを必要とするのかを知るためにある。
LispやMLのような関数型言語の場合、変数は値を表す名前であり
値はS式や関数のようにサイズ制限がないのでヒープ上に置かれ、
変数にはその値へのポインタのみが置かれる。
なので、手続き型言語のように変数に型を書く必要はない。
関数型言語での型は、手続き型言語のそれとは異なり、
プログラムの整合性をチェックするために使われる。