TL;DR
- 関数型プログラミングは、純粋関数、永続的データ構造、遅延評価、参照透過性に支えられ、コードを読み書きしやすく、テストしやすく、再利用しやすくする。
- JVM は末尾呼び出し最適化を行えないので、Clojure では直接の再帰を避け、
recur、遅延シーケンス、trampoline、メモ化を使い分ける。既存のシーケンス関数を組み合わせて問題を解くのが最も良い。 - 出力先がコレクションのときは、トランスデューサで中間シーケンスを作らずに即時変換し、外部リソースはエダクションで扱う。
内容
関数型プログラミングの概念と、それを Clojure で実践するためのガイドラインを見たあと、再帰と遅延評価、シーケンスライブラリの組み合わせ、即時変換を扱う。各節のまとめは次のページにある。
- Programming Clojure, Third Edition 第4章 関数型プログラミング(FP)の概念
- Programming Clojure, Third Edition 第4章 怠け者になろう
- Programming Clojure, Third Edition 第4章 もっと怠け者の勧め
- Programming Clojure, Third Edition 第4章 再帰ふたたび
- Programming Clojure, Third Edition 第4章 即時変換(Eager Transformations)
- Programming Clojure, Third Edition 第4章 def フォームについて