Skip to content(if available)orjump to list(if available)

Clolog

Clolog

28 comments

·April 15, 2025

mark_l_watson

Very cool! I just cloned the repository, will play with it later.

BTW, Clojure was such a brilliant name (from Rich): Whenever I see a project starting with "Clo" I pay attention.

EDIT: had a chance to try it: a very cool resource!

mindcrime

> Whenever I see a project starting with "Clo" I pay attention.

You're going to love my "Cobol in Clojure" project "Clobol" then!

phlakaton

"Surely this is a joke," I thought as I read this.

Then I did a Google search just to make sure...

iLemming

> Clojure was such a brilliant name

IIRC Rich wanted a name that has CLR and J in it - Clojure initially was officially to be supported on both .Net and Java stacks. Later he realized that keeping it completely compatible on both platforms is an uphill battle. CLR Clojure still exists, but it's not "an officially supported" runtime.

sterlind

really happy to see something of a revival of interest for logic programming lately. it's an extremely powerful tool if you know when to reach for it.

MarkMarine

When would you reach for it?

iLemming

Scheduling, e.g., course scheduling - allocating rooms, professors, time slots while satisfying constraints; Product configuration systems - helping customers select compatible options for complex products; Genealogical research - querying family relationships and ancestry; Static analysis tools for code - finding bugs or verifying properties without execution; Medical diagnosis systems - inferring conditions from symptoms based on medical knowledge; Travel planning - finding optimal routes with multiple constraints; Legal reasoning systems - determining applicability of laws to specific cases; Natural language interfaces - parsing questions and generating appropriate database queries; Hardware verification - proving correctness of circuit designs; Puzzle solvers - Sudoku, crosswords, logic puzzles;

Basically anything that excels when declarative specification of relationships is more natural than imperative algorithms.

sethhochberg

This all makes perfect sense. The gap I usually have - and I admit its probably something of a skill issue, I have relatively little formal CS background - is how these abstract declarations of rules are integrated into a product. The example code in projects like this is usually pretty dense and intangible.

Does anyone have good examples of open source codebases or reading material in this area? Lets imagine I have a set of complex business rules about the way a product can be configured and I want to use a logic programming language to enforce them, called from a web interface based on config data stored in a traditional relational database. Is that... a misunderstanding of how these things are to be used?

I've love a good book about how to bring tools and techniques for logical correctness into a Rails ecosystem... or similar language/framework for app dev. I love the promises many of logic languages make but can't rewrite existing applications in them wholesale and it seems like they're a poor fit for that anyways. How are people blending these worlds at large enterprises? Maybe the answer is that nobody really is yet, and thats what makes things like Clolog + Clojure so exciting?

whartung

Well the bigger question is how big does the system have to be to warrant breaking out a new technique, much less adding a new runtime or other large dependency.

Now, I have no direct experience with any of the common logical programming systems. I have familiarity.

But anytime I came upon anything that might justify such a system, the need just didn’t seem to justify it.

Talking less than 100 rules. Most likely less than a couple dozen. Stacking some IFs and a bit of math, strategically grouped in a couple aptly named wrapper methods to help reduce the cognitive load, and it’s all worked pretty well.

And, granted, if I had solid experience using these systems, onboarding cost would be lower.

When have you found it to be worth cutting over?

winwang

I've seen shops (e.g. Netflix I think) use Datalog for certain query types.

baq

Same reason you’d reach for SQL when querying relations - a good enough tool designed for the job.

The problem has always been getting facts into the prolog system. I’ve been looking for a prolog which is as easy to embed in eg Python or node as a Postgres client and… crickets.

Avshalom

I dunno which postgres client you're thinking of but:

https://github.com/tau-prolog/tau-prolog

https://pyswip.org/ https://www.swi-prolog.org/packages/mqi/prologmqi.html

Unfortunately the tau site's certificate seems to have lapsed sometime in the last week or so, but I swear it's actually very good.

paddy_m

I'm working on a problem that I think logic programming might be a fit for. And I already have a lisp. Anyone interested in giving me some feedback on a mini language for heuristics?

https://marimo.io/p/@paddy-mullen/notebook-b79pj7

anonzzzies

This is very nice, I played with it before and working on a similar idea in CL (I am one of those people who finds the uniformity of no syntax soothing).

winwang

This might unironically be a reason for me to finally try Clojure!

cpdean

I absolutely love the aesthetic of a repo having a giant README.md

SOLAR_FIELDS

I think about docs a lot and the best docs are the ones that are easiest to find. There is few things right in front of you more than README.md

jdminhbg

Can anybody comment on when or why to choose this over core.logic?

null

[deleted]

jan3024-2r

[flagged]

justin_oaks

Your comment could have been simplified to: "I don't like the syntax"

And that could be optimized further by leaving no comment.

All syntax is learned. None of it is "intuitive". Anything unfamiliar to you will seem unpleasant. Some syntaxes can be better than others, but to make that distinction you'd have to at least cite reasons why one syntax is better than another.

dang

I've taken the liberty of fixing the formatting in your comment so the code reads like code. For HN formatting info, see https://news.ycombinator.com/formatdoc.

But can you please make your substantive points more thoughtfully, without name-calling or shallow dismissals? These things are in the site guidelines: https://news.ycombinator.com/newsguidelines.html.

dkersten

I’ve been programming for 25 years and this looks fine to me. Perhaps it is you who is the problem here and not the code?

dayvigo

[flagged]