TL;DR
- マクロは複雑なので、関数で実現できるなら書かない。パターンをカプセル化する唯一の方法であるときと、呼び出し側が楽になるときに書く。
- マクロは構文クォート、アンクォート、スプライシングアンクォートでテンプレートのように書き、ローカルな名前には auto-gensym を使ってシンボルの捕捉を避ける。
- カプセル化できないパターンは特殊形式のまわりに起きる。マクロは条件的な評価、var の定義、Java の呼び出し、評価の遅延、評価を包む、lambda を避ける、のカテゴリに分類できる。
内容
Clojure のマクロをいつ書くべきか、どう書くか、どんな種類があるかを扱う。各節のまとめは次のページにある。
- Programming Clojure, Third Edition 第8章 いつマクロを使うべきか
- Programming Clojure, Third Edition 第8章 フロー制御のマクロを書く
- Programming Clojure, Third Edition 第8章 マクロを簡単にする
- Programming Clojure, Third Edition 第8章 マクロの分類学