平々毎々(アーカイブ)

はてなダイアリーのアーカイブです。

IBM developerWorks 「関数型の考え方」の記事まとめ

dWのサイトにはインデックスがないので、とりあえず時系列でまとめる。
(まとめコメントは随時追加予定)

関数型の観点で考える

第1回では、純粋関数、高階関数、第一級関数といったあたり。

第2回では、クロージャ―とコレクションメソッド(≒リスト処理高階関数)。

第3回では、部分適用、カリー化、再帰

サンプルコードは、Java以外に Functional Java, Groovy, Scala, Clojureが登場するけど、それらの関数型言語をよく知っている必要はない。

不変性と合成

イミュータブルオブジェクトによって副作用を避ける。Javaで実装すると手間だが、Groovyだと簡潔。
コードの再利用に対するスタイルとして、継承による連結とパラメーターによる合成を対比。後者であればstatic classになっていく。
Effective Javaを参照し、継承を使うと問題が起きるケースを説明。パラメーターによる合成の例として、高階関数を受け取るコレクション操作(map/foldなど)を紹介。