...我该如何避免呢?
(run* [q]
(featurec q {:a 1})
(featurec q {:a 2})))
返回
((_0
:-
(clojure.core.logic/featurec _0 {:a 2})
(clojure.core.logic/featurec _0 {:a 1})))
我理解这意味着_0
地图必须至少包含:a 1
键值对和:a 2
键值对。这似乎是矛盾的,因为:a
不能同时映射到两者1
,2
除非我们使用 MultiMaps。我不能把它读成:a 1
OR :a 2
,因为我指定的约束是一个连词。我原以为结果应该是()
因为约束是矛盾的;没有任何价值q
可以满足这些约束。
我一定是读错了结果。