首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Clojure中定义匿名函数时出错

在Clojure中定义匿名函数时出错
EN

Stack Overflow用户
提问于 2014-06-29 16:47:56
回答 1查看 98关注 0票数 2

我正在翻阅“克洛法尔的Joy”一书,并在“中国”中遇到了以下一系列错误。2:

代码语言:javascript
复制
(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的想法与草书插件。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-29 20:11:32

不知怎么的,您在自己的名称空间中意外地定义了一个名为list的东西,但是没有给它一个值。您可能会意外地这样做的一种方法是在函数中使用def,但从来不实际调用该函数:

代码语言:javascript
复制
(defn foo [x]
  (def list x))

解决方案是不要这样做,而恢复正常状态的最简单方法是,一旦名称空间中不再包含list的错误重新定义,就重新启动repl并重新加载它。如果您找不到定义它的位置,请注意,重新加载命名空间也应该打印一条警告消息,告诉您您正在重新定义list,我认为它包括一个行号,但我不太清楚。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24478160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档