syntax-rules と派生式型

R5RS 7.3. に原始式型による派生式型のマクロ定義がある。
つまり、 define-syntax と syntax-rules を実装すれば、派生式(cond, case, and, or, let, letrec, begin, do, ...) は自分で定義しなくてよい。マクロとして定義できる。変数参照、リテラル式(quote)、手続き呼び出し、手続き(lambda)、条件式(if)、代入(set!) だけが原始式型だ。

これ(要は、scheme のマクロ)を自分で実装するのは概念を整理しないと駄目そう。というか現時点で全く実装できる気がしない。
実用を完全に度外視してもなお、コンパイラを書くって何て大変なんだろう。

でも、CL で書いたパターンマッチが、もう一度活躍しそうだ。