『Scala スケーラブルプログラミング』 第08章 関数とクロージャー

8.6 部分適用された関数

Rubyのように関数呼び出しの括弧が不要でありながら、関数をオブジェクトとして扱うのはどうするんだろう、と疑問におもっていたのだけど、アンダースコアをつかった部分適用が利用できるみたい。

おっ、という驚きはあったけど、よく考えるとまったく自然なことだということに気がついた。xとyとzというパラメータをとる関数について考えると、xを与えるとxの値が定まりyとzをパラメータにとる関数が生成されると考えられる。うーん、きれい。

まとめ

ScalaRubyよりずっと関数型っぽいなー、という気がする。関数型プログラミングのこともよくわかっていないけど、関数の扱いがより自然でいままであった「数学の世界の関数」と「プログラミングの世界の関数」との間にあったギャップが埋まってきている気がする。

あと、クロージャーの説明がいままでに読んだものよりずっとわかりやすかった。もちろん、前提知識の有無とかも関わっているとおもうけど。