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