Some background: miniKanren is a logic programming language in the neighborhood of Prolog (they are similar in the way that Python and Javascript are similar). The language is described and implemented in the book <i>The Reasoned Schemer</i>, which is a sequel to the classic <i>The Little Schemer</i>. The major implementations of miniKanren are in Clojure and Racket.<p>I was reading TRS and wanted to run the code, but I didn't have (and didn't feel like getting) Clojure or Racket. At the same time, I wanted to try my hand at some serious Elisp programming. The obvious answer was to put miniKanren into Emacs, and that's what this is.
Fun! I highly recommend watching Dan Friedman and William Byrd give their miniKanren conference talk (they've done it a number of times slightly differently) e.g. this one at the "Conj" Clojure convention: <a href="https://www.youtube.com/watch?v=5Q9x16uIsKA" rel="nofollow">https://www.youtube.com/watch?v=5Q9x16uIsKA</a><p>It's really a fun presentation and does a great job introducing logic programming and miniKanren to lay programmers.
Snarky aside: you can also install a real Prolog (e.g. SWI Prolog) and run that in an Emacs session, and will be more performant and expressive than anything you would build on top of Emacs Lisp
Now, I am all for logic programming, but i have rarely found a place where such a solution haven't been to much of a mental burden for a project with more contributors than only myself. I love to find problems where logic programming is a good fit, and I love the elegance of such solutions, but I can'tc expect my team to actually grok it.<p>What are your experience? Any successful uses?
> namely that of ending the names of test functions with p<p>I feel like this was a missed opportunity to say "predicate" instead of "test functions".
Bahaha, 3 of the 30 front page stories are about Lisp. Yessss, rise, Rise! Let the Lisp dominance commence! Take to the streets and take macros into your hearts! Demand a formal holiday to celebrate all conses! Tear off those strongly typed shackles and write a macro system to expand your grocery lists! <a href="https://github.com/sctb/lumen" rel="nofollow">https://github.com/sctb/lumen</a><p>Today is a good day.