我试图在clojure中使用mini-kanren的实现。但一直在努力理解cond-cond-u和cond-e之间的区别。我似乎很清楚cond-e,但对cond-a和cond-u的理解是安静的。
cond-e采取一系列目标,然后尝试每一个......即尝试所有成功的分支。
cond -a和cond-u相反提交给第一个谓词成功的分支,cond -a返回之后所有可能成功的统一。虽然cond-u只返回第一个成功的统一...但是当我使用它时,似乎这种理解是不正确的。有人可以帮我澄清这种理解。
答案 0 :(得分:4)
cond-e给出了所有成功分支的答案
cond-i给出了每个答案,但是将它们交错。
cond-a仅提供第一个成功分支的答案
cond-u只给出第一个成功分支的第一个答案
答案 1 :(得分:2)
我只想试着解决这些问题。有一个缩短的计划实施 Sokuza-kanren有一些评论,今晚我会读到它。