MLをいじることに

授業で使う言語はML(SML)ということで、最近はMLをかじってみている。ネット上の情報は少ない。というか検索してもMailing Listと混ざる。

ちょっと書いてみた感想。

できあがるコードの品質は高いと思う。強い静的型付けによって大半のエラーはコンパイル時に弾かれる。かつ環境の書き換えが(ほぼ)許されないため、単純に関数を重ねても意図したとおりに動く。コードの挙動も推論しやすい。実際、コンパイルさえ通ればほぼ間違いなく期待通りに動いてくれた。

じゃあ実用的かと言われると……なんか違う感がある。うまく言えないが、どうも手になじまない。

動的型付けの言語ばっかり触ってたので「型は本質ではない」という感覚が身についてしまっているのかもしれない。静的な型付けには間違いなくメリットがあるし、MLの場合は型推論が空気を読んでくれるので、型宣言はほとんど必要ない。記述量という観点からは相当マシなはず。

それでもRubyLispをいじってる時に感じるような高揚感はない。あたかも型に縛られているような感覚が先行しているのか? 単に脳みそが保守的なだけなのか? 不思議なものだ。

動的と静的の良いとこ取りな言語があれば嬉しいんだけどなあ。リテラルとオプショナルな型宣言から型推論して整合性を検証し、型が静的に決定できない部分は実行時チェックにするとか。Gradual Typingなんて用語を聞くし、研究されてはいるのだろう。調べておこう。