2024 年Clojure状态调查问卷中分享您的想法!

欢迎!请查看关于页面以了解更多关于如何使用本网站的信息。

0 投票
core.logic

Clojure集合的遍历似乎导致StackOverFlowError

`
(run* [?s] (== ?s #{1 2 3}))

(let [s #{1 2 3}] (run* [?s] (== ?s s)))

(run* [?convertedseq ?seq]
(== ?seq #{1 2 3})
(project [?seq]

(== ?convertedseq (vector ?seq))))

`

`
StackOverflowError

clojure.core.logic/walk*/fn--2722 (logic.clj:216)
clojure.core.logic/eval2927/fn--2928 (logic.clj:956)
clojure.core.logic.protocols/eval1478/fn--1479/G--1469--1486 (protocols.clj:55)
clojure.core.logic/walk* (logic.clj:214)
clojure.core.logic/walk*/fn--2722 (logic.clj:218)
clojure.core.logic/eval2927/fn--2928 (logic.clj:956)
clojure.core.logic.protocols/eval1478/fn--1479/G--1469--1486 (protocols.clj:55)
clojure.core.logic/walk* (logic.clj:214)
clojure.core.logic/walk*/fn--2722 (logic.clj:218)
clojure.core.logic/eval2927/fn--2928 (logic.clj:956)
clojure.core.logic.protocols/eval1478/fn--1479/G--1469--1486 (protocols.clj:55)
clojure.core.logic/walk* (logic.clj:214)

`

3 答案

0 投票

评论由:dnolen

core.logic不再支持集合的归一化,因此您看到的是一个完全缺乏支持的错误。我并不反对支持完全固化的集合的基本归一化,因为那时我们只需要测试相等性,但我倾向于在集合中出现任何逻辑变量时使系统抛出异常。

0 投票

评论由:norman

LOGIC-154的修复建议解决了这个问题。

0 投票
参考:https://clojure.atlassian.net/browse/LOGIC-130(由alexisport导入)
...