What does HackerNews think of core.logic?
A logic programming library for Clojure & ClojureScript
Though to be fair, both of these libraries are in Lisp languages, which inherently support the design pattern of slipping into/out-of DSLs.
[1] http://nikodemus.github.io/screamer/ [2] https://github.com/clojure/core.logic
> A logic programming library for Clojure & ClojureScript. core.logic offers Prolog-like relational programming, constraint logic programming, and nominal logic programming for Clojure.
Btw, miniKanren from Reasoned Schemer has long been available in Clojure as core.logic (with some minor differences). https://github.com/clojure/core.logic
Because Clojure plays so well with the JVM, having industry applications leveraging logic engines is becoming beautifully feasible.
[1] https://picolisp.com/wiki/?home
[3] https://github.com/clojure/core.logic
A modern logic programming language: https://github.com/mcsoto/cosmos
To oversimplify, in the miniKanren world programs are written using relational logic, wherein there are "variables" and then certain "relationships" between the variables. That is the program specification. Now we can run the specification and allow miniKanren to generate one or more variables that satisfy the relations. Thus a miniKanren program can have more than one answers. One interesting side-effect of this kind of an abstraction is that programs can also be run backwards to generate more programs that satisfy certain relations. That's pretty much what's happening with Barliman.
[0] http://minikanren.org/ [1] https://en.wikipedia.org/wiki/Daniel_P._Friedman [2] http://webyrd.net/ [3] http://okmij.org/ftp/ [4] https://github.com/clojure/core.logic
core.logic https://github.com/clojure/core.logic core.match https://github.com/clojure/core.match
1. Sussman's talk "We Really Don't Know How to Compute" (http://www.infoq.com/presentations/We-Really-Dont-Know-How-T...) and his work on the Propagator (https://github.com/ProjectMAC/propagators).
2. Gremlin Graph Traversal Machine (http://arxiv.org/pdf/1508.03843v1.pdf, http://www.datastax.com/dev/blog/the-benefits-of-the-gremlin...)
3. Clojure core.logic (https://github.com/clojure/core.logic) and core.match (https://github.com/clojure/core.match)
4. Yedalog: Exploring Knowledge at Scale (http://research.google.com/pubs/pub43462.html, https://www.youtube.com/watch?v=SP9zS43FRzQ)
5. Datomic Datalog (http://docs.datomic.com/query.html)
Python also allows for functional programming to a certain degree, but clojure is a lot more powerful when it comes to language extensions.
Threads as a library (for js environments) for clojure. https://github.com/clojure/core.async
Logic programming for clojure. https://github.com/clojure/core.logic
Declarative UI building, with dataflow semantics. http://reagent-project.github.io
Additionally immutability makes your life a lot easier. Parallel computing in clojure is a no brainer, you just change your map to pmap, and that's it.
With Clojure, If you understand the JVM type system and performance, you can also write high performance DSLs using Clojure macros. https://github.com/clojure/core.logic allegedly is a project along these lines, but I haven't looked too much into it. It heavily uses Clojure protocols (which map to Java interfaces) for performance. I had been working on a code generator for Clearley, which sits neglected on my hard drive, but is able to perform just a little slower than unoptimized hand-written parsers. Since in Clojure compile/runtime separation is optional and off by default, you can use Clojure to generate Clojure code, making life a lot easier.
In non-declarative languages like Java, you have to build up the different pieces of computations, while you keep maintaining a mental picture of how the various pieces fit together.
In Prolog, you declare the entities and the relationships/constraints between them, and the system will build the solution for you through inference.
David Nolen has done some awesome work writing the core.logic[1] library, which makes those Prolog gooodies accessible to Clojure programmers.
https://github.com/clojure/core.logic
https://github.com/clojure/core.logic/wiki/A-Core.logic-Prim...
its certainly not as easy to understand when you are starting off, but it would seem to have more rewards to work with core.logic since they've implemented a lot of classic logic programming.
or is there no overlap ?