コンパイル時のバインディングのためにマクロに特殊変数を挿入したいと思います。
たとえば、次の形式です。
(define-route (my/route)
(some-proc @@request)
(some-other-proc @@request))
次のように展開する必要があります。
(some-code)
...
(lambda (request)
...
(some-proc request)
(some-other-proc request))
request は、呼び出し元によって指定されたすべての場所で、生成されたコード内の request にバインドされます。
私はそれについて最善の方法がわかりません。これは、ラケット マクロが実行できる機能を提供するより一般的なパターンですか、それとも手動で行う必要がありますか?
もしそうなら、ボディ パターンを再帰的にループし、'@@request に一致するシンボルを探して、それらを置換する必要がありますか? syntax->list はこのように再帰的ではないことに気付きました。
(syntax->list #'(printf "first: ~a\" (get-var (other-proc)))
は 4 ではなく 3 つの構文オブジェクトであり、3 番目の構文オブジェクトはさらに 2 つです。したがって、ここで手動で繰り返す必要があると思いますが、これを行うためのより良い方法があるでしょうか?
ご協力いただきありがとうございます。