オブジェクト指向や手続き型のプログラミングが散文であるとしたら、関数型プログラミングは俳句や短歌のようなものだ。関数型の利点の一つは処理を簡潔に記述できること。例えば、1~9の数値リストから偶数だけを抽出したいとき、関数型で書くなら「filter(lambda x:x%2==0, [1,2,3,4,5,6,7,8,9])」のようなコードとなる(Pythonの関数型機能を使った場合)。for文やループカウンタ用変数などは出てこないのだ。

 しかし、関数型の入門者にとってはこの簡潔さが逆にハードルとなる。記述がシンプル過ぎて何をやっているのかよくわからないと感じてしまう。俳句や短歌を味わうのにその背景となる様々な事象を知らなければならないのと同様、関数型言語の簡潔な記述を読みこなすには、関数型特有の様々な概念の理解が必要なのだ。学習の初期段階では細かい文法やライブラリの使い方よりも、「高階関数」等の概念をしっかりとマスターすることが重要だろう。

 このような目的にこの本は最適だ。「Scala“で”学ぶ」とタイトルにある通り、関数型言語の各種概念の説明に重点を置いている。「おわりに」によると、企画段階ではScalaの文法解説書になる予定だったが、先にそのような書籍が何冊も出てしまったため“関数脳入門”の内容になったらしい。

 最近、関数型言語はマルチコアCPU、クラウド時代に適していると言われるが、それがなぜかも「参照透明性」などの概念とともに説明している。並行処理に興味のあるプログラマにもお薦めできる。

オブジェクト指向プログラマが次に読む本

オブジェクト指向プログラマが次に読む本
テクノロジックアート著
長瀬嘉秀/町田修一監修
技術評論社発行
3339円(税込)