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")))

このコードは、私が望むものを出力しません。私はそれが出力することを期待しました:

<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を使用しています。

4

1 に答える 1

4

あなたの問題は、CL-WHOでは非定数文字列を次のように内部に配置する必要があるということstrです。

(defmacro rawpage ()
  (:div (str (str+ "hello," "name"))))
于 2013-03-27T15:08:56.507 に答える