我正在尝试使用 core.logic 建模一个图,并希望匹配所有有两个节点的边的节点。我已经想出了以下方法,但它返回了两个结果,即 [2 3 4] 和 [2 4 3] 是等效的。我该如何约束查询只返回期望的结果?
(use ' clojure.core.logic.pldb)
(db-rel edge a b)
(def g
(db
[edge 1 2]
[edge 2 3]
[edge 3 4]
[edge 2 4]))
(with-db g
(run* [q]
(fresh [x y z]
(edge x y)
(edge x z)
(!= y z)
(== q [x y z]))))