オブジェクト指向や手続き型のプログラミングが散文であるとしたら、関数型プログラミングは俳句や短歌のようなものだ。関数型の利点の一つは処理を簡潔に記述できること。例えば、1~9の数値リストから偶数だけを抽出したいとき、関数型で書くなら「filter(lambda x:x%2==0, [1,2,3,4,5,6,7,8,9])」のようなコードとなる(Pythonの関数型機能を使った場合)。for文やループカウンタ用変数などは出てこないのだ。 しかし、関数型の入門者にとってはこの簡潔さが逆にハードルとなる。記述がシンプル過ぎて何をやっているのかよくわからないと感じてしまう。俳句や短歌を味わうのにその背景となる様々な事象を知らなければならないのと同様、関数型言語の簡潔な記述を読みこなすには、関数型特有の様々な概念の理解が必要なのだ。学習の初期段階では細かい文法やライブラリの使い方よりも、「高階関数」
![Scalaで学ぶ関数脳入門](https://cdn-ak-scissors.b.st-hatena.com/image/square/bed39b5962a5d552c95b6d796db8f55e72d32943/height=288;version=1;width=512/https%3A%2F%2Fxtech.nikkei.com%2Fimages%2Fn%2Fxtech%2F2020%2Fogp_nikkeixtech_hexagon.jpg%3F20220512)