3 ms·
> Prolog loses much of its power and intuitiveness to become a barebones functional PL How do you mean? The grain of Prolog isn't functional in the slightest,
by ux266478 2mo ago
> Prolog loses much of its power and intuitiveness to become a barebones functional PL
How do you mean? The grain of Prolog isn't functional in the slightest, and it's not a barebones language by any means. It comes with a massive standard library, extensive tooling, etc. Real Prolog implementations come with their own UI toolkit, IDE, etc.
> without much going for it
There's plenty of going for it, there's frankly nothing else like it. It has all the same mutable grammar as a Lisp, and a computational model that's much, much better at language-processing. Bi-directional structural matching through unification, execution path natively handled by backtracking, and DCGs as part of the standard, etc. All of these things contribute to an incredibly unique superpower that makes implementing sound DSLs of any type-0 grammar incredibly trivial. More so than any other language, including Lisp!
This is all incredibly superficial too. DCGs are a lot more general than just describing a foreign grammar, and they're a single example of what you can use Prolog's mutable grammar to do (DCGs are just a macro!)
> (needing lots of extensions beyond ISO)
Which is true of all industrial grade tools. Look at LispWorks and SBCL, look at Racket. They don't stop at the standard, do they? The ISO standard for Prolog is a massive beast, much larger than you think it is, and is plenty useful by itself. But it's hardly meaningful that serious tools go beyond the standard, or provide ways to break it. That's a universal for serious tools.
Here's the thing, even putting aside all the architectural choices of miniKanren that make it inappropriate for symbolic AI (immutability, occurs-check, etc.) it is what you accuse Prolog of being: barebones. To this date, I don't think a single real debugger exists for any miniKanren implementation. It's always the most hacky, unsound, "why care about it" neglect. All other issues aside, this one (of many) effectively kills it. We're not talking an issue of needing to build up intuition for an alien execution model, we're talking the complete and total lack of introspection for something we're trying to build a complex system with.
In Symbolic AI, your inference system cannot be a second class citizen. It is where the overwhelming majority of your work lives. It is where all the complex machinery is built. It requires a real development system built around the inference engine, because that thing is your computer. You need a debugger. You need an IDE. There's a reason LispWorks puts so much effort into KnowledgeWorks, why it comes with so much stuff. That's why corporations pay out the nose for enterprise licenses. You can't have a serious, usable system without serious tools.