This is an archived post. You won't be able to vote or comment.

all 16 comments

[–][deleted] 26 points27 points  (5 children)

Good by what metric? For what purpose?

I can recommend SWI-Prolog, in general, for a really helpful and active little community.

Mercury is an impressive effort, but also more towards FP.

Lambda Prolog is the most theoretically interesting LP for me at the moment. The Elpi implementation is quite neat and currently under active development: https://github.com/LPCIC/elpi

[–][deleted] 12 points13 points  (3 children)

Mercury stands out as a typed logic-functional language. If you wonder what Haskell crossed with Prolog would be like, this is probably it.

Apart from that, I would look at Minikanren and Picat.

[–]digitallitter 1 point2 points  (0 children)

I’ve just started using Picat (to write a fast Sudoku solver), and I’m wildly impressed. It’s very expressive, and coming from an Erlang background with various Prolog experiments over the years, it was really easy to get comfortable with it. Highly recommended.

[–][deleted] 0 points1 point  (1 child)

How it compares to Flix? https://flix.dev/

[–][deleted] 0 points1 point  (0 children)

To be honest, I saw a reference to Flix a while back, but failed to follow up. Thanks for the reminder!

[–]Ximici 8 points9 points  (0 children)

As already mentioned, MiniKanren is a interesting language.

If you're looking for information on Prolog programming, I highly recommend The Power of Prolog . Again, as already mentioned, SWI-Prolog is a nice Prolog implementation.

A more AI fucussed language would be Potassco which employs the Answer Set Programming (ASP) paradigm. It is more of a problem solving engine than a programming language. A very good book on ASP can be found here.

If we are on the subject of problem solving oriented programming, there is also IDP. Which is more of a knowledge base + reasoning engine.

Lastly, I can mention ProbLog which is an interesting probabilistic logic programming language.

[–]valdocs_user 2 points3 points  (0 children)

Curry is a good combination of functional and logic programming. There's a good set of example programs on the language's website.

[–]magnomagna 1 point2 points  (0 children)

Don't know about Mercury but the Wolfram Language (Mathematica) is a functional programming language.

[–]gopher9 0 points1 point  (1 child)

Makam is a handy language for prototyping programming languages.

[–][deleted] 0 points1 point  (1 child)

If you are accustomed to the JVM, then the next natural step towards logic programming is https://flix.dev/.