5
在元素位於有限域而不是distincto
的情況下使用fd/distinct
的優點是什麼?distincto vs. fd/distinct in core.logic
以下全部返回([0 1] [1 0])
。
;;; With distincto
(run* [q]
(fresh [x y]
(fd/in x y (fd/interval 1))
(distincto [x y])
(== q [x y])))
;;; With fd/distinct
(run* [q]
(fresh [x y]
(fd/in x y (fd/interval 1))
(fd/distinct [x y])
(== q [x y])))
;;; Without fd at all.
(let [interval [0 1]]
(run* [q]
(fresh [x y]
(membero x interval)
(membero y interval)
(distincto [x y])
(== q [x y]))))
值得注意的是,雖然看起來你可以使用distincto
的任何地方,你可以(但周圍沒有其他方式)使用fd/distinct
,同樣不能說是爲membero
和fd/in
。