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的快乐》一书,在第2章中遇到了以下一系列错误: (def make-list0 #(list)) => (var cursive-test.core/make-list0) (make-list0) IllegalStateException Attempting to call unbound fn: #'cursive-test.core/list clojure.lang.Var$Unbound.throwArity (Var.java:43) (def m

我正在读《Clojure的快乐》一书,在第2章中遇到了以下一系列错误:

(def make-list0 #(list))
=> (var cursive-test.core/make-list0)
(make-list0)
IllegalStateException Attempting to call unbound fn: #'cursive-test.core/list  clojure.lang.Var$Unbound.throwArity (Var.java:43)
(def make-list2 #(list %1 %2))
=> (var cursive-test.core/make-list2)
(make-list2 1 2)
IllegalStateException Attempting to call unbound fn: #'cursive-test.core/list  clojure.lang.Var$Unbound.throwArity (Var.java:43)
(def make-list2+ #(list %1 %2 %&))
=> (var cursive-test.core/make-list2+)
(make-list2+ 1 2 3 4 5)
IllegalStateException Attempting to call unbound fn: #'cursive-test.core/list  clojure.lang.Var$Unbound.throwArity (Var.java:43)

我不知道这里发生了什么。我正在使用IntelliJ IDEA和草书插件。有什么想法吗?

不知何故,您在自己的命名空间中意外地定义了一个名为
list
的东西,但没有给它一个值。您可能会意外地执行此操作的一种方法是在函数中使用
def
,但从不实际调用该函数:

(defn foo [x]
  (def list x))

解决方案是不这样做,恢复正常状态的最简单方法是重新启动repl,并在名称空间中不再存在对
列表的错误重新定义后重新加载名称空间。如果找不到定义它的位置,请注意,重新加载名称空间还应该打印一条警告消息,告诉您正在重新定义
列表
,我认为其中包含行号,但我不记得确切的位置。

无论出于什么原因,不合格的
列表
都无法解析为
clojure.core/list
。不过,我对Clojure名称空间的记忆还不足以提出修复建议。