IBM developerWorks 「関数型の考え方」の記事まとめ
dWのサイトにはインデックスがないので、とりあえず時系列でまとめる。
(まとめコメントは随時追加予定)
関数型の観点で考える
- 関数型の考え方: 関数型の観点で考える、第 1 回 (2011/7/1)
- 関数型の考え方: 関数型の観点で考える、第 2 回 (2011/7/1)
- 関数型の考え方: 関数型の観点で考える、第 3 回 (2011/7/29)
第1回では、純粋関数、高階関数、第一級関数といったあたり。
第2回では、クロージャ―とコレクションメソッド(≒リスト処理高階関数)。
第3回では、部分適用、カリー化、再帰。
サンプルコードは、Java以外に Functional Java, Groovy, Scala, Clojureが登場するけど、それらの関数型言語をよく知っている必要はない。
不変性と合成
- 関数型の考え方: 不変性 (2011/9/2)
- 関数型の考え方: 連結と合成、第 1 回 (2011/10/7)
- 関数型の考え方: 連結と合成、第 2 回 (2011/11/4)
イミュータブルオブジェクトによって副作用を避ける。Javaで実装すると手間だが、Groovyだと簡潔。
コードの再利用に対するスタイルとして、継承による連結とパラメーターによる合成を対比。後者であればstatic classになっていく。
Effective Javaを参照し、継承を使うと問題が起きるケースを説明。パラメーターによる合成の例として、高階関数を受け取るコレクション操作(map/foldなど)を紹介。
Groovy に隠された関数型の機能
- 関数型の考え方: Groovy に隠された関数型の機能、第 1 回 (2012/1/6)
- 関数型の考え方: Groovy に隠された関数型の機能、第 2 回 (2012/2/3)
- 関数型の考え方: Groovy に隠された関数型の機能、第 3 回 (2012/3/1)
関数型のデザイン・パターン
- 関数型の考え方: 関数型のデザイン・パターン、第 1 回 (2012/4/5)
- 関数型の考え方: 関数型のデザイン・パターン、第 2 回 (2012/5/10)
- 関数型の考え方: 関数型のデザイン・パターン、第 3 回 (2012/6/14)
Eitherとパターン・マッチング
- 関数型の考え方: Either と Option による関数型のエラー処理 (2012/7/12)
- 関数型の考え方: Either ツリーとパターン・マッチング (2012/8/9)
- 関数型の考え方: ディスパッチの再考 (2012/9/20)
変換処理
- 関数型の考え方: 実にさまざまな変換処理 (2012/10/25)
- 関数型の考え方: 変換処理と最適化 (2012/11/15)
遅延処理
- 関数型の考え方: 遅延処理、第 1 回 (2012/12/20)