(defn ex20 []
(run*
[x]
(resto '(c o r n) (list x 'r 'n))))
(defn ex20a []
(run*
[x]
(resto '(c o r n) `(~x r n))))
(ex20) -> (o)
(ex20a) -> ()
为什么呢?这是怎么回事? run *和宏之间是否存在一些奇怪的交互?
谢谢!
答案 0 :(得分:1)
syntax-quote命名空间符号:
(defn ex20a []
(run* [x]
(resto `(c o r n) `(~x r n))))
或
(defn ex20a []
(run* [x]
(resto '(c o r n) (list x 'r 'n))))