> > Is this also useful for implementing something like Datalog? If yes, > in what ways? > > Regards, > Shantanu
I don't know for Datalog but for Prolog. Imagine you have parent(a,b). parent(b,c). ancestor(X,Y) :- parent(X,Z) , ancestor(Z,Y). (1) ancestor(X,Y) :- parent(X,Y). (2) Now you have the goal: ancestor(a,V). to apply the rule (1) you must unify ancestor(a,V) with ancestor(X,Y). It gives you : {X -> a; V ->Y} Then, you must unify parent(X,Z) with either parent(a,b) or parent(b,c). Only the first one is possible knowing X->a and you get back: {X->A,V->Y, Z->b}... and so on. Prolog alternates branching point with an unification of the goal and the result of the rules.... (and of course backtracking) Hopes that helps a bit, Nicolas. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en