【发布时间】:2017-04-27 13:36:24
【问题描述】:
我写了这个“代码”来说明问题,因为实际代码很大
(defn add-list
([number]
(def used [number])
(add-list number used))
([number used]
;Add elements to used
;Process the elements in used
;Find the next number
(add-list number used)
))
我需要一个可以在 fn 中访问的向量,这将允许我处理向量内的项目,然后将输出添加到向量中,以便旧项目和新项目都在这个向量中下一个周期。
我通过在 add-list 函数上方定义向量来使其工作,但是如果我第二次在 repl 上运行程序,向量不会被清除。它还说向量有时是未绑定的。
【问题讨论】:
-
您需要更具体地了解代码需要做什么。您可能还希望查看用于累积结果的
reduce函数:clojuredocs.org/clojure.core/reduce -
我没有添加数字,我只是想将一个元素向量传递到这个循环中,该循环将根据当前内容添加到向量中。
-
我一直在使用上述样式使其工作不可靠,但出现以下错误:IllegalArgumentException 不知道如何从以下位置创建 ISeq:clojure.lang.Var$Unbound
-
代码错误。
(add-list 3)产生StackOverflowError,因为 arity-2 函数实际上是(defn add-list [number used] (add-list number used)),这是一个不可避免的递归。