スキーマ コンパイラは、マクロ展開中にどの関数を使用できるかをどのように決定しますか?
パターン置換を生成するだけでなく、少なくともフェンダー部分でいくつかの関数を呼び出すことができる、構文ケースのような低レベルのメカニズムを意味します
編集:
つまり、マクロ展開プロセスで通常の関数を使用する必要があります。例:
(define (twice a)
(declare 'compile-time)
(* 2 a))
(let-syntax ((mac (lambda (x)
(syntax-case x ()
((_ n) (syntax (display (unsyntax (twice n)))))))))
(mac 4))
ここで、n は数値であることがわかっており、展開中に (n の 2 倍) の評価が行われます。