5
我core.logic为什么core.logic的输出会重复相同的值?
(require [clojure.core.logic :as l]) (l/run* [q] (l/fresh [a b c] (l/membero a [1]) (l/membero b [4 5]) (l/membero c [1 2]) (l/== q [a b])))
试过这种预期的结果是[1 4] [1 5]
,但它是[1 4] [1 4] [1 5] [1 5]
然后我就开始摆弄它,发现这个:
(require [clojure.core.logic :as l]) (l/run* [q] (l/fresh [a b c] (l/membero a [1]) (l/membero b [4 5]) (l/membero c [1 1 1 1 1 1 1 1]) (l/== q [a b])))
;; => ([1 4] [1 4] [1 4] [1 5] [1 4] [1 4] [1 5] [1 4] [1 5] [1 4] [1 5] [1 5] [1 5] [1 5])
哪里有是[1 5]
穿插[1 4]
发生了什么事?这是重复的东西应该是一个功能或错误?
此答案是正确的。 c提供了更多的可能性,但是我们没有把它的价值表达出来,所以它看起来好像我们得到了重复的结果。 – dnolen