0
(require :cl-who)
(defmacro rawpage ((&rest head) &body body)
`(cl-who:with-html-output-to-string (*standard-output* nil :prologue t)
(:html
(:head
(:meta :charset "utf-8")
,@head)
(:body
,@body))))
(defmacro str+ (&rest strs)
`(concatenate 'string ,@strs))
(rawpage() (:div (str+ "hello," "name")))
這段代碼不會輸出我想要的內容。 我預期輸出:未在CL-WHO模板中呈現的字符串
<html><head><meta charset='utf-8' /></head><body><div>hello,name</div></body></html>
但是,它的輸出:
<html><head><meta charset='utf-8' /></head><body><div></div></body></html>
任何人都可以告訴我爲什麼?我正在使用SBCL。
一個良好的首次啓動可能是做'(macroexpand-1「(rawpage()(: div(str +「hello,」「name」))))'看看它實際擴展到了什麼。其次,用'defun str +(&rest strs)(格式nil「〜{〜a〜}」strs)'替換你的'str +'宏可能會更好一些(不要使用宏,在這裏函數可以做到這一點) 。 – Vatine 2013-03-27 14:24:12