Can anybody comment on when or why to choose this over core.logic?
Clolog is more of a direct translation of Prolog into Clojure, with an s-expression syntax rather than Prolog’s standard syntax, but close. Core.logic is a translation of Mini-Kanren into Clojure and doesn’t use anything close to Prolog’s syntax, even one based on s-expressions. Prolog and Mini-Kanren, while both logic programming systems also use different search algorithms. Prolog uses a depth-first exploration of the solution space, whereas Mini-Kanren uses a breadth-first search. Consequently, Prolog can be more memory efficient (remember, it was created in the 1970s), but it can get stuck in infinite parts of the solution tree and never find a solution. Mini-Karen is less memory efficient as it explores the solution tree more broadly, but it can find solutions even if the solution tree has infinite branches.
So, why/when to choose this? When you want something much more Prolog-like, using the same search algorithm as Prolog. That said, they both do logic programming. I haven’t benchmarked, but from comments in the README, I suspect core.logic will be more performant as it compiles down to Clojure function calls which are then compiled down to Java function calls. It’s sort of like choosing between Python and Java. They both do imperative programming with objects but they both have their own strengths and weaknesses.
core.logic has a lot of limitations you pretty quickly run into, and they languish on their bug tracker for years now because nobody actually works on it.
Well this repo seems not to have had any commits for a year, so I'm not sure how much better this is:
https://github.com/bobschrag/clolog/commits/main/
Maybe this post will spark some interest and revitalise it a bit?