Haskellについて語ってみる

'15年1月23日
タグ Haskell

インターネットというものをごく普通に使うようになってから、ネット上にある夥しい情報によって多くの利益・恩恵を受けてきた。ちょっと分からないことがあっても検索をかけるとたちまち分かってしまうことも多く、非常にありがたい。これは言うまでもなく、数多くの方たちが労力を割いてホームページ/ブログという形にして情報を提供してくださったり、あるいはプログラムなどをアップロードしてくださっているからである。PCの画面に向かって感謝しているだけじゃなく、自分もなにかしらの情報を提供して誰かの役に立てれば…という思いも無くはないのだが、ブログを立ち上げてセッセと記事を書こう、という気持ちにまではなかなかなれなかった。理由は色々ある。

まあ、できない・やらない理由なんていくらでも思いつけるものであるし、手抜きをするのは楽なものである。ではなぜこのたびは重い腰をあげたのか?

しばらく前から関数型言語に興味を持ち、最初の頃はMLをいじったりしていたが途中でHaskellに乗り換え、以降、Haskellで色々プログラムを書いて遊んでいる。当然のことながら、Haskellコンパイラ/インタープリタをはじめとして各種ライブラリ、参考記事など、多くの方たちの労力の上にボクの楽しい遊びが成立している。

先日、『関数プログラミング実践入門』という本を買った。「ロジックパズル」の項など、よく理解できていない箇所がいくつかあったものの、一気に通読した。他にも関数型言語の本は何冊か持っているが、それらとは切り口が少し違っていて面白かったためではないかと思う。著者はnotogawaさんという方で、「ぼくのぬまち 出張版」というブログを書かれており、その中で本書について触れられた記事があった。出版に至る経緯から感想まで書かれており、その中の「感想」には色々と考えさせられた。一部分を引用する。

「ある分野が好きなだけではその人にとって幸せな世界はあまり作れない」
「裾野が広ければこそ頂点もまた安定して高くなっていける余地が生まれる」
「コミュニティとしては細く削った鋭いエンピツのような歪な構成をしてるように見える」
「わかんないこと調べるとすぐに論文に案内される」
「ニュービーに優しいコンテンツじゃないと良い循環にならない」

なるほど、なんとなく分かるような気もするし、思い当たることもある。

コミュニティに「貢献」するということを、なんとなく「鋭いエンピツの先をさらに鋭く高くすること」のように思えたりすることもあり、たいした能力の無い身としては「まあ、自分の出る幕じゃないな…」と考えてしまうのだが、裾野を拡げるということならば、なにがしかの貢献もできるのではなかろうか。C/C++やJavaならばすでに裾野も十分に広がっているのだろうから「いまさら」感があるのだが、Haskellの場合ならば裾野を拡げることにチョビットくらいは貢献できるかな・・・などと思ったのが今回Haskellについて何か書いてみようかと思った一番のキッカケである。実際に貢献できるかどうかはまた別の話。

Haskellを学ぶにあたり、自分が何で苦戦したのか、何が障壁となっていたのかなどを振り返りつつ、とりあえずモナドのあたりまで、つまずいていた頃の自分に読ませて理解してもらえるような内容を書いていくつもりである。「Haskellは難しくない」という主張も多く見られるが、やっぱり難しいんじゃないかなぁ…と感じている。まあ、そのあたりの話はいずれ機会があれば書いてみたい。

というわけで、Haskell初級者あたりを読者として想定しているが、「デタラメ書いてんじゃねーぞ、コラ」みたいなご指摘は非常にありがたいので、熟練の方たちが気まぐれで目を通されることもチョッピリ期待している。

そんなわけで、Haskell界隈のみなさま、どうぞよろしくお願い致します。