いくつかの s 式があります(let ((whatever (foo (bar 4) (bar 5)))) ...)
( の結果として. 今、たとえばマクロ式に(read "(whatever (foo (bar 4) (bar 5)))")
展開するカスタム マクロでそれを変換したいと思います。foo
特定の S 式にマクロを適用するメカニズムは何ですか? この置換が .scm ファイルのコンパイル時に行われるのではなく、s 式を読み込んだ後であることに注意してください。
さらに、これらの S 式は Scheme コードではないため、eval を使用したくありません。let
その特定の s 式でステートメントを展開したくありませんfoo
。
基本的に、Scheme には十分に柔軟なツリー変換フレームワークが含まれており、特定のマクロを使用してあらゆる種類の S 式をいつでも操作できると考えていました。しかしその間に、Sylwester も暗示しているように、Scheme のマクロはファーストクラスのオブジェクトではなく、このように使用できないことを知りました。