結城さんが define-syntax を使った debug マクロ(デバッグプリント - 結城浩のSICP日記 - sicp)を紹介されている。マクロの便利な使い方の好例だと思う。Scheme ではなく、Common Lisp の話になってしまうが、高い評価を受けている Practical Common Lisp という本(オンラインで読める)にもマクロを使った面白い例が 9 章に載っている。その章ではマクロを使ってユニットテストのための簡易ライブラリを作っていくのだが、まだ Lisp のマクロというものがよく分からなかった僕はこの内容にとても感銘を受けた。せっかくなのでこの内容の前半をさらっと簡単に Scheme (Gauche) を使って紹介したいと思う。 本ではまずつぎのようなテスト(関数 + のテスト)を例にしている。 (= (+ 1 2) 3) (= (+ 1 2 3) 6)