Was ist der Vorteil der Verwendung von fd/distinct
in Fällen, in denen die Elemente in einer endlichen Domäne statt distincto
sind?distinct vs. fd/distinct in core.logic
Die folgenden alle zurück ([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]))))
Bemerkenswert ist, obwohl es scheint, Sie distincto
an jedem Ort verwenden können, wo Sie fd/distinct
(aber nicht umgekehrt) verwenden kann, kann man das nicht für membero
und fd/in
gesagt werden.