MiniKanren – An embedded DSL for logic programming
minikanren.org
minikanren.org
Luckily, you can now read the microKanren paper (http://webyrd.net/scheme-2013/papers/HemannMuKanren2013.pdf) which breaks apart the "core" portion of the logic processing into a purely-functional bit, separate from the macros for the nice syntax.
That little core can be implemented very easily in almost any language with closures. For some fun, I implemented it in JavaScript using some sweet.js macros on top. It took about an hour to get something working, and a day or two to fix more bugs, and now I understand how kanren works. Plus I added some tracing in so I can see how different steps in the program cause the logic variables to get bound: http://adamsolove.com/microScopeKanren/
Definitely worth the time if you're interested in relational programming.
http://www.infoq.com/presentations/miniKanren
Byrd's dissertation on miniKanren is an accessible introduction to the concepts involved in relational programming:
I'm using a PAIP-style embedded Prolog and an optimised Datalog for fast prototyping compiler passes - things like alias analysis, implementing type systems (e.g., Hindley-Milner maps to Prolog naturally), constant folding, DCE, Array-SSA, and many more.
Harlan is using cKanren for region inference and some other passes.
A nice motivational paper (on Datalog): http://www.cs.cmu.edu/~aldrich/courses/654/tools/bierhoff-bd...
And now, I'm glad I have.
http://kanren.sourceforge.net/
I give a simple example of a toy use of Kanren and made a few observations about logic programming systems, here:
http://apps.keithflower.org/?p=238
Those interested will probably want to read "The Reasoned Schemer":
Clojure's Core-Logic is one such project and it appears to have the most active community... but it's not really accurate to call it a faithful implementation of either Kanren or MiniKanren; rather they've used those projects as a starting point and by now they've added various other capabilities or avoided/removed others.
Is that a fair summary?