clojure宏:无法解析符号
Clojure初学者,正在尝试宏。我正在编写以下宏clojure宏:无法解析符号,clojure,Clojure,Clojure初学者,正在尝试宏。我正在编写以下宏 (defmacro f [exp] (let [[a op b] exp] (list op a b))) (f (1 + 2)) 它按预期工作 然而 我试图将(列表op a b)返回的值替换为”(op a b),但在这种情况下*无法解析symbolop。我认为这是因为列表首先计算它的参数,所以我尝试了”(~op a b),但仍然得到相同的错误。我理解错了什么?问题是op,a,b不能在引用的表单中进行计算。如果要使用~(unqu
(defmacro f [exp]
(let [[a op b] exp]
(list op a b)))
(f (1 + 2))
它按预期工作
然而
我试图将
(列表op a b)
返回的值替换为”(op a b)
,但在这种情况下*无法解析symbolop
。我认为这是因为列表
首先计算它的参数,所以我尝试了”(~op a b)
,但仍然得到相同的错误。我理解错了什么?问题是op
,a
,b
不能在引用的表单中进行计算。如果要使用~
(unquote),则需要使用反勾符号而不是”
(单引号)
(defmacro f [exp]
(let [[a op b] exp]
`(~op ~a ~b)))