Engineers are always looking for technologies to hop onto. Prolog is niche for a reason: I don’t think Prolog scales. In some ways it is too flexible and powerful.
I still avoid it, because yeah, once you solve that problem and avoid those thousands of lines, you are stuck. If you try make the rest of your system in Prolog, it will become a non-viable mess before you even finish it.
That said, I think the main thing that Prolog is missing is easy integration with other languages. If I could define some environment in Haskell, pack it with some Prolog predicate and get a list back, I would use it all the time.
Basically, Prolog is declarative programming. You can attach properties to your data and then define relations between the data based on whether they have that property (or not). Something along the lines of: X is grandfather of Y if X is man and X has child Z which has child Y.
The above statement is very simple to write, a couple of lines. This will perform depth first search (or breadth first with some longer algirithm) using your data. As a result, Prolog can provide all such matches of all your data, or just the grandchildren of X, or both grandfathers of Y, etc.
Anyway, what you are really getting is just a good implementation of the search through the relations based on constraints. The main reason Prolog is used is because other languages just don't provide a good library for constraint based search through your data.
Can you illuminate why the language being a constraint solver tells you why it didn't catch on?
As I said, I have never seen one integrated with any language (oh, well, now I have seen Flix).
I've been spending a ton of time with the language and its implementation through my day job, and I recently spoke about its use as a DSL for embedded knowledge bases: https://www.youtube.com/watch?v=lYLkaOq7WbU
Javascript: http://tau-prolog.org/
Java: https://apice.unibo.it/xwiki/bin/view/Tuprolog/ (also SWI, Ciao and Sicstus have Java bridges)
Go: https://github.com/ichiban/prolog
Common Lisp: https://www.cliki.net/Prolog
Racket: https://docs.racket-lang.org/racklog/
Guile: https://gitlab.com/gule-log/guile-log
Erlang: https://github.com/rvirding/erlog
Also SWI and Ciao have a pretty straight forward FFI for C.
https://github.com/tau-prolog/tau-prolog/blob/master/RELEASE...
this looks handy https://github.com/tau-prolog/tau-prolog/issues/295
Sounds like there is a use case for abstraction? Category theory maybe?
Prolog III is considered the origin of constraint logic programming: http://www.prolog-heritage.org/en/ph30.html
That said, I used it for a simple game AI at university. My AI was the best of the class and it was something like 30 LOC. I remember thinking I would have spend 5x more time writing the same thing in C instead of 1 hour (plus some tests and play session)
I do have some ideas for some apps I'd like to tackle at some point. Those primarily consist of interacting with system constraints.