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,如果在线程宏中使用匿名函数之前定义该函数: (def even #(map even? %)) (-> [1 2 3] even) 我得到了正确的结果: (false true false) 但是,如果我评估以下代码: (-> [1 2 3] #(map even? %)) 我得到以下错误: clojure.lang.Compiler$CompilerException: java.lang.IllegalArgumentException: fn params must be

如果在线程宏中使用匿名函数之前定义该函数:

(def even #(map even? %))
(-> [1 2 3] even)
我得到了正确的结果:

(false true false)
但是,如果我评估以下代码:

(-> [1 2 3] #(map even? %))
我得到以下错误:

clojure.lang.Compiler$CompilerException: java.lang.IllegalArgumentException: fn params must be Symbols

为什么不能在thread宏中使用匿名函数?

thread宏将上一个表单作为下一个表单中的第二个元素插入

(-> [1 2 3]
    #(map even? %))
(-> [1 2 3]
    (#(map even? %)))
变成

(fn* [1 2 3] [arg] (map even? arg))
您想要:

(->> [1 2 3]
     (map even?))