(rev-macro args …) body)))) → lambda式の引数部は式ではないので展開されない (lambda (a b) (cons a b)) は (lambda (rev-macro a b) (cons a b))となるだけ 外側から展開されていく性質上、 2つ以上のマクロを組み合わせる場合CPSマクロが必要になることがある 例) リストを反転するマクロを使って、lambda式の引数を反転させるマクロを作る (※rev-lambdaのやっかいな点はまだあって、後で出てきます)
(cont-syntax reverse-result)) ・ (rev-lambda (a b) (cons a b))を与えたとすると cont-args:(a b) ← rev-lambdaのargs cont-body:(cons a b) ← rev-lambdaのbody → rev-lambdaのargsの(a b) とbodyの(cons a b)がsyntax-rulesの中と外で別れた 仕様で決められた挙動ではないが(cons a b)が(a b)を刺さなくなる 比較的メジャーな処理系はすべてこうなる