Haskell を勉強がてらしばらくいじっていた.結論から言うと,気に入った.とても気に入った.一つの言語をこんなに気に入ったのは,初めてRacketを触った時以来かもしれない.

Haskell の素晴らしさは,基本的には実装というよりも,それを支える理論の美しさにあると思う.理論の美しさは人の心を打つし,心を打たれた人は自分の心を打ったものに対して言葉を尽くしてその美点を語ろうとする.おそらく,その結果として,Haskell を使った解説はとても品質が高い.そうした,品質の高い教材に多く触れたことは,非常に豊かな経験になった.

美しい理論は,整然と,妥当に抽象化されている.抽象化されたものは,理解しやすく,理解しにくい.この一見相反する二面性の原因は,対象を解釈する人間の具体的な経験の量に起因する.対象についての十分な経験を積んだ人間にとって,妥当に抽象化された対象ほど理解すやすいものはない.対象の妥当な抽象化はふつう,十分な経験を積んだ人間によって行われるのだから,当たり前と言えば当たり前だ.しかし一方で,具体的な経験値が足りない人間にとって,妥当で整然とした抽象性は無味乾燥で,やけにツルツルピカピカした,捉えどころのないものに映ってしまう.その抽象性,例えばインターフェースが,どんな目的で,誰のために,何を,どのように抽象化したものなのか,ということについて,漠然とも想像力が及ばないのは,学習の状態としてはかなり苦しい.これは,手計算の経験が足りない高校生が,積分という操作の意味の理解に挫折するのに近い心理だと思う.

Haskell について調べていると,数学がちゃんと資産として扱われていて,嬉しい気持ちになる.数学的思考だとか,数学的テクニックだとかいう漠然とした理念ではなく,数学的な対象や数学的な操作が,それと分かる形で明示的に応用されているからだ.その意味でHaskell をして,純粋関数型言語,とする表現はまさに適当だと思う.さらに素晴らしいのは,数学の資産をスムーズに計算機に持ち込むための工夫が,結果的に妥当な抽象化に繋がっているところだ.Haskell はこの点で決して頭でっかちではなく,地に足がついている.そして,この地に足がついた言語を触る感覚というのが,個人的に好きだ.Clojureにしろ,Rubyにしろ,思想的に地に足のついた言語の共通点として,その言語に特有の世界理解が,とてもはっきりと提示されている,ということがある.その世界理解はとてもユニークで,一貫していて,かつ十分な表現力を持っているのが興味深い.この側面を,融通が利かない,不自由だ,と考える向きもあるかもしれないが,書かれたプログラムがあくまでも表現である以上,あまりに融通無碍な言語では結局,輪郭の強い世界を表現できないように思う.

何はともあれ,この半年ほどでHaskell 関連の本を10冊ほど読み,非常に感銘を受けたので,今後のアウトプットにきちんと反映していきたい.僕の心は常にLisperだけど,HaskellLisp に並行してこれからもきちんと研鑽を積んでいく予定だ.Haskell によるアウトプットも継続的に行なっていく.