Grokking Functional Programming

2014年にManningのEarly Access Programで購入したもののずっと未完成のままだったので電子積読されていたのですが、昨年ようやく完結したようで、さらに今年になって日本語版も発売されたとのことで9年の歳月を経て読んでみました。

モナドという単語が一度も登場しないあたりからも本書の方向性がわかるのではないかと思いますが、関数型プログラミングのエッセンスを、実践的なプログラミングにおけるメリットと共に丁寧に解説されています。サンプルコードはScalaで書かれているのですが、特にScalaのことを知らなくても読めると思います(というかScalaを知っているのであればこの本の半分以上は読む必要ないかもしれません)。もちろんScalaについても本書を読み進めるのに必要な範囲で解説はされているのですが、通常であれば早い段階で説明するようなことがかなり後半で出てきたりと、あくまで関数型プログラミングを学ぶことに主眼が置かれています。

参照透過性や不変値、代数データ型からIO、再帰、ストリーム、非同期処理と進んでいき、分量もかなりあるのですが、節が細かく区切られており、テンポよく読み進められますし、参照透過性、不変値などのメリットはプログラミングにおける一般的なベストプラクティスとしてすでに広く認識されていると思いますのでこのあたりは読み飛ばしてしまってもよいかもしれません。また、図や吹き出しが多用されていたり、一段落するごとに振り返りやコーヒーブレイクが入ったりと、読みやすくなるよう工夫されており、これが分量が多い理由の1つでもあります。ですので分量があるといっても読んでいて実際のページ数ほどの負担感はありません。関数型プログラミングのメリットの1つであるテスタビリティにもちゃんと触れられているのも良いですね。

日本語版は読んでいないのですが、実践的な関数型プログラミングの入門書としておすすめできる一冊なのではないかと思います。非関数型のプログラミング言語を使う場合でも活かせる内容だと思いますので普段関数型プログラミング言語をお使いでない方にも是非読んでいただきたいです。