Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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中的IllegalArgumentException错误_Clojure_Illegalargumentexception - Fatal编程技术网

Clojure中的IllegalArgumentException错误

Clojure中的IllegalArgumentException错误,clojure,illegalargumentexception,Clojure,Illegalargumentexception,我得到这个错误: IllegalArgumentException不知道如何从以下位置创建ISeq:clojure.lang.Symbol clojure.lang.RT.seqFrom RT.java:542 当我调用此函数时: (defn my-butlast [lista] (loop [c lista last ()] (if (= (count c) 1) last (recur (c

我得到这个错误:

IllegalArgumentException不知道如何从以下位置创建ISeq:clojure.lang.Symbol clojure.lang.RT.seqFrom RT.java:542

当我调用此函数时:

    (defn my-butlast [lista]
      (loop [c lista
             last ()]
        (if (= (count c) 1)
          last
          (recur (concat last (first c))
                 (pop c)))))
函数应该返回一个列表,其中包含与其输入列表相同的元素,但不包括最后一个元素,或者如果该元素为空

只有当列表中有两个或更多类似的元素时,才会发生错误:

(my-butlast '(a b))
concat:所提供的coll中元素的串联,这些元素取自。您的错误似乎与未传递正确的参数类型一致。您可以尝试使用conj代替concat,或者将第二个参数包装到向量中的concat

如果选择conj,请确保理解conj到列表与conj到向量之间的不同行为:

concat:所提供的coll中的元素从中串联。您的错误似乎与未传递正确的参数类型一致。您可以尝试使用conj代替concat,或者将第二个参数包装到向量中的concat


如果您选择conj,请务必理解conj到列表与conj到向量之间的不同行为:

我建议使用不同的方法,在我看来更简单一点。尝试类似于反向rest反向列表的方法


如果这就是你所需要的,就不必复杂化了。如果你真的有这样开始的理由,只要读一读concat,那就是错误的来源。

我会建议一种不同的方法,在我看来更简单一点。尝试类似于反向rest反向列表的方法

如果这就是你所需要的,就不必复杂化了。如果你真的有这样开始的原因,只要读一读有关concat的内容,这就是错误的来源。

正如其他人所说,concat只接受集合

下面是令人不快的表达: 最后第一个c

请查看这些链接,因为它们提供了一些有用的技术来帮助调试Clojure代码:

正如其他人所说,concat只接受集合

下面是令人不快的表达: 最后第一个c

请查看这些链接,因为它们提供了一些有用的技术来帮助调试Clojure代码: