4

clojure.core.logic のセットのウォーキングに問題があるようです。最小限の失敗の例:

(run* [q] (== q #{}))

生産する

java.lang.StackOverflowError at clojure.core.logic.Substitutions.walk(logic.clj:344) at clojure.core.logic$walk_STAR_$fn_ 2633.invoke(logic.clj:216) at clojure.core.logic$eval2838 $fn _2839.invoke(logic.clj:956) at clojure.core.logic.protocols$eval1389$fn_ 1390$G _1380__1397.invoke(protocols.clj:55) at clojure.core.logic$walk_STAR_.invoke(logic. clj:214) で clojure.core.logic$walk_STAR_$fn_ 2633.invoke(logic.clj:218) で clojure.core.logic$eval2838$fn _2839.invoke(logic.clj:956) で clojure.core.logic .protocols$eval1389$fn_ 1390$G _1380__1397.invoke(protocols.clj:55) at clojure.core.logic$walk_STAR_.invoke(logic.clj:214) at clojure.core.logic$walk_STAR_$fn_2633.invoke(logic.clj:218) at clojure.core.logic$eval2838$fn _2839.invoke(logic.clj:956) at clojure.core.logic.protocols$eval1389$fn_ 1390$G _1380__1397.invoke(protocols .clj:55) で clojure.core.logic$walk_STAR_.invoke(logic.clj:214) で clojure.core.logic$walk_STAR_$fn_ 2633.invoke(logic.clj:218) で clojure.core.logic$eval2838 $fn _2839.invoke(logic.clj:956) at clojure.core.logic.protocols$eval1389$fn_ 1390$G _1380__1397.invoke(protocols.clj:55)

これにより Stackoverflow が生成されるのはなぜですか? 空のベクトル/リスト/マップ/その他のタイプとの統合は期待どおりに機能します。

4

2 に答える 2

2

セットは core.logic ではサポートされていません。

于 2013-08-02T21:46:33.847 に答える