假设我为 CL-WHO 定义了一个宏:
(defmacro test-html (&body body)
`(with-html-output-to-string (*standard-output* nil :PROLOGUE t :indent t)
(:html
(:body
,@body))))
然后:
(test-html (:h1 "hallo"))
给出(删除第一行):
"<html>
<body>
<h1>
hallo
</h1>
</body>
</html>"
正如预期的那样。现在我定义了一个函数来生成 CL-WHO 使用的 s 表达式:
(defun test-header (txt)
`(:h1 ,txt))
当用“hallo”调用时返回
(:h1 "hallo")
但是现在当我打电话时
(test-html (test-header "hallo"))
它返回:
"<html>
<body>
</body>
</html>"
出了什么问题,为什么?