我正在翻阅“克洛法尔的Joy”一书,并在“中国”中遇到了以下一系列错误。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的想法与草书插件。有什么想法吗?
发布于 2014-06-29 20:11:32
不知怎么的,您在自己的名称空间中意外地定义了一个名为list的东西,但是没有给它一个值。您可能会意外地这样做的一种方法是在函数中使用def,但从来不实际调用该函数:
(defn foo [x]
(def list x))解决方案是不要这样做,而恢复正常状态的最简单方法是,一旦名称空间中不再包含list的错误重新定义,就重新启动repl并重新加载它。如果您找不到定义它的位置,请注意,重新加载命名空间也应该打印一条警告消息,告诉您您正在重新定义list,我认为它包括一个行号,但我不太清楚。
https://stackoverflow.com/questions/24478160
复制相似问题