Lisp系言語のマクロは、他の言語に見られるマクロ(例えばCプリプロセッサマクロ)とは 大きく異なります。Lispのマクロは元の言語の構文を拡張する手段なのです。 例えば、Gaucheの構文を若干変えることで他のScheme実装用に書かれたSchemeプログラムを 走らせたり、あるいは自分の問題解決に適した「ミニ言語」をデザインすることさえできます。
Gaucheは、名前の衝突を避ける安全なマクロを簡単に書ける、「衛生的な(hygienic)」 マクロをサポートします。これは、従来のLispマクロは知っていても衛生的なマクロを 初めて見る人には、やや難解に見えるかもしれません。 衛生的マクロに馴染みが無い読者向けに、紹介の節を用意しました(なぜ衛生的マクロか)。 既に衛生的マクロを知っている読者はその節は読み飛ばして構いません。
| • なぜ衛生的マクロか: | ||
| • 衛生的マクロ: | ||
| • 伝統的なマクロ: | ||
| • ハイブリッドマクロ: | ||
| • 構文パラメータ: | ||
| • 識別子: | ||
| • マクロのデバッグ: | ||
| • マクロユーティリティ: |