1

いくつかの 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 のマクロはファーストクラスのオブジェクトではなく、このように使用できないことを知りました。

4

1 に答える 1