TL;DR

  • マクロは複雑なので、関数で実現できるなら書かない。パターンをカプセル化する唯一の方法であるときと、呼び出し側が楽になるときに書く。
  • マクロは構文クォート、アンクォート、スプライシングアンクォートでテンプレートのように書き、ローカルな名前には auto-gensym を使ってシンボルの捕捉を避ける。
  • カプセル化できないパターンは特殊形式のまわりに起きる。マクロは条件的な評価、var の定義、Java の呼び出し、評価の遅延、評価を包む、lambda を避ける、のカテゴリに分類できる。

内容

Clojure のマクロをいつ書くべきか、どう書くか、どんな種類があるかを扱う。各節のまとめは次のページにある。

キーワード