gpt4 book ai didi

clojure - "compiling"clojure 的堆栈跟踪错误

转载 作者:行者123 更新时间:2023-12-02 10:18:29 24 4
gpt4 key购买 nike

我正在学习 Clojure,我发现很难理解特定编译器错误发生的位置:

java.lang.ClassCastException: java.lang.Long cannot be cast to 
clojure.lang.IPersistentCollection, compiling:(fwpd/core.clj:100:1)

第 100 行只是:

(fib-seq3 5)

所以它什么也没说,因为实际上错误出在 fib-seq3 函数中(“conj”调用的参数被反转,见下文)。

这正常吗?无法知道错误在哪里???

仅供引用,这是代码(再次,我知道错误在哪里;我只是不明白我应该如何找到它,因为该消息没有告诉我它发生在哪一行):

(defn fib-seq3
([to]
(fib-seq3 [] 0 1 0 to))
([coll a b k to]
(if (= k to)
coll
(fib-seq3 (conj b coll) b (+ a b) (inc k) to)))

(fib-seq3 5)

最佳答案

Clojure 中的堆栈跟踪很糟糕。事实上,error messages were rated by Clojure community as the top priority area for improvements, as well as Clojure most frustrating part .

这个问题并不新鲜。 Clojure 堆栈跟踪在相当长的一段时间内没有显着的改进。但 Clojure 团队充分意识到这种情况,因此我们希望能够有所改进。

为了更好地理解 Clojure 堆栈跟踪,请尝试阅读 Clojure Stack Traces for the Uninitiated 。虽然这篇文章有点旧,但仍然有意义。

简而言之,您应该寻找所谓的“原因跟踪”,它是任何 Clojure 堆栈跟踪的第二部分,并以“Caused by”短语开头。

关于clojure - "compiling"clojure 的堆栈跟踪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35340254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com