TL;DR

  • 関数型プログラミングは、純粋関数、永続的データ構造、遅延評価、参照透過性に支えられ、コードを読み書きしやすく、テストしやすく、再利用しやすくする。
  • JVM は末尾呼び出し最適化を行えないので、Clojure では直接の再帰を避け、recur、遅延シーケンス、trampoline、メモ化を使い分ける。既存のシーケンス関数を組み合わせて問題を解くのが最も良い。
  • 出力先がコレクションのときは、トランスデューサで中間シーケンスを作らずに即時変換し、外部リソースはエダクションで扱う。

内容

関数型プログラミングの概念と、それを Clojure で実践するためのガイドラインを見たあと、再帰と遅延評価、シーケンスライブラリの組み合わせ、即時変換を扱う。各節のまとめは次のページにある。

キーワード