球拍扩展引用列表形式的宏
racket expanding a macro which is in quoted list form
我有一个宏
(define-syntax-rule (with tag body)
(string-append (format "<span class=\"~s\">" 'tag)
body
(format "</span>")))
> (display (with p "some text"))
<span class="p">some text</span>
这是想要的结果
如何“宏展开”然后计算列表'(with p "some text")
?这是一个示例,当我阅读包含这些表单的文件并打算将它们全部展开时返回的内容。
eval
可行,但我知道那不是正确的方法。
我知道有许多可用的 html 模板解决方案 - 但这里的目标并不完全 HTML - 不要问! :)
提前致谢
Racket 没有这样的内置函数,但是添加它很简单:
(define (macroexpand form)
(syntax->datum
(expand-to-top-form
form)))
示例:
> (macroexpand '(with p "some text"))
'(string-append (format "<span class=\"~s\">" 'p) "some text" (format "</span>"))
我有一个宏
(define-syntax-rule (with tag body)
(string-append (format "<span class=\"~s\">" 'tag)
body
(format "</span>")))
> (display (with p "some text"))
<span class="p">some text</span>
这是想要的结果
如何“宏展开”然后计算列表'(with p "some text")
?这是一个示例,当我阅读包含这些表单的文件并打算将它们全部展开时返回的内容。
eval
可行,但我知道那不是正确的方法。
我知道有许多可用的 html 模板解决方案 - 但这里的目标并不完全 HTML - 不要问! :)
提前致谢
Racket 没有这样的内置函数,但是添加它很简单:
(define (macroexpand form)
(syntax->datum
(expand-to-top-form
form)))
示例:
> (macroexpand '(with p "some text"))
'(string-append (format "<span class=\"~s\">" 'p) "some text" (format "</span>"))