【发布时间】:2014-12-05 20:18:20
【问题描述】:
我不明白为什么从下面两个例子中,第一个返回正确的值(1),而第二个返回()。我本来希望得到(:key) 的结果,或者是找不到解决方案的异常,但不是空列表。
(l/run* [q]
(l/== {:key 1} {:key q}))
;; BUT IT DOESNT WORK
(l/run* [q]
(l/== {:key 1} {q 1}))
【问题讨论】:
-
run* 返回解决方案列表,因此 () 表示没有解决方案
-
同意,但据我了解,有一个解决方案。如果你使用
q = :key,那不满足方程吗?我认为我们必须将答案解读为:couldn't find a solution而不是I can guarantee that no solution exist。
标签: clojure clojure-core.logic