說我已經定義爲CL-WHO宏:Common Lisp:如何使用宏爲CL-WHO生成S表達式?
(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>"
正如所預期的。現在我已經定義了一個函數生成S-表達由CL-WHO使用:
(defun test-header (txt)
`(:h1 ,txt))
當所謂的「你好」返回
(:h1 "hallo")
但現在當我打電話
(test-html (test-header "hallo"))
它返回:
"<html>
<body>
</body>
</html>"
出了什麼問題,爲什麼?
感謝您的鏈接!這很有趣......在閱讀整篇文章並進入評論部分後,我意識到2個月前我閱讀了這篇文章並留下了評論。我的記憶讓我失望 - 我會嘗試Vsevolod的叉子! – mck 2012-04-12 13:50:56