Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
clojure宏:无法解析符号_Clojure - Fatal编程技术网

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

Clojure初学者,正在尝试宏。我正在编写以下宏

(defmacro f [exp]
  (let [[a op b] exp]
    (list op a b)))

(f (1 + 2))
它按预期工作

然而


我试图将
(列表op a b)
返回的值替换为
”(op a b)
,但在这种情况下*无法解析symbol
op
。我认为这是因为
列表
首先计算它的参数,所以我尝试了
”(~op a b)
,但仍然得到相同的错误。我理解错了什么?

问题是
op
a
b
不能在引用的表单中进行计算。如果要使用
~
(unquote),则需要使用反勾符号而不是
(单引号)

(defmacro f [exp]
  (let [[a op b] exp]
    `(~op ~a ~b)))