I tried using mini-kanren implementation in clojure. But he was trying to understand the difference between cond-cond-u and cond-e. I seem to be very clear about cond-e, but understanding cond-a and cond-u is very poor.
cond-e takes a set of goals and then tries each of them ... i.e. tries all branches that succeed.
cond-a and cond-u, on the contrary, pass to the branch whose first predicate succeeds, and cond-a returns all possible successful joins there after. while cond-u only returns the first successful unification ... but this seems to be wrong when I use it. Can someone help me clarify this understanding.
source share