Real World Haskell

Real World Haskell: Code You Can Believe In

Real World Haskell: Code You Can Believe In

RealWorldHaskell読みました。上のリンクは洋書のKindle版です。日本語のKindle版はまだないのだけど、紙のオライリー本はこちら→Real World Haskell―実戦で学ぶ関数型言語プログラミング

ちなみにオンライン版はFreeで以下に公開されています。
Real World Haskell

Kindle本の良さは、だいたい勉強の本は通勤の電車の中で読むのだけど、紙のオライリー本は重いし、オンライン版は地下鉄で読めない。オンライン版は前もってダウンロードしておけなくもないけど、わからん単語をその場で辞書引けるKindleまじ快適でオススメ。

本書の内容はHaskellってイマイチ流行らないのは実用に使えないよねーとかいう誤解を解くために、Haskellでもこんな実用的なプログラムが書けるぜーというのを例示してます。はじめは簡単な文法の説明から始まりますが、9章あたりから急にサンプルプログラムの難易度が上がって心がくじけそうになりますが気合いで読んだ。JSONパーサー作ったり、SQLでDBアクセスしてみたり、Podcastのダウンロードアプリを書いてみたり、Cのライブラリコールできたら何でもできるやんとやってみたり、シスログ転送するソケットプログラムを書いてみたり、スレッド使った並列プログラミングをしてみたりなどなど。とにかく話題が多岐にわたりHaskellだって本気出すとこんなことできるんだぜーというかんじの本です。また、遅延評価が引き起こす性能問題にコンパイラのプロファイラ使って原因を特定する方法など実際的な話題も扱っています。

まぁCのライブラリコールできたら本質的に何でもできるがなという気はするけど、ただHaskellシステムプログラミングしてるコードとか超汚いし何も無理してHaskellで書かなくてもよいんでね?というかんじはした。プログラミング言語には得手不得手があるのだから、抽象的でエレガントなコードが書ける領域で使うべきなんじゃないかと思う。ヒューリスティックな探索問題とか組み合わせが莫大に発散してしまうような推論とか。イメージとしてはAIとかゲームエンジンとかクオンツな自動売買とか?

というわけでRealWorldHaskell自体はHaskell本気出せば低水準なプログラムも書けるんだぜーという応用範囲の広さを理解する上で読んだ意味はあったけど、次の学習の方向性としては、YesodとかWebフレームワークみたいなナウい実用的な方向に行くよりも、もっと言語仕様を理解してHaskellらしさを学ぶべきかなーという風に思いました。