prologlogic-programmingmercurycurrylambda-prolog

What is more interesting or powerful: Curry, Mercury or Lambda-Prolog?


I would like to ask you about what formal system could be more interesting to implement from scratch/reverse engineer.

I've looked through some existing and open-source projects of logical/declarative programming systems. I've decided to make up something similar in my free time, or at least to catch the general idea of implementation.

It would be great if some of these systems would provide most of the expressive power and conciseness of modern academic investigations in logic and its relation with computational models.

What would you recommend to study at least at the conceptual level? For example, Lambda-Prolog is interesting particularly because it allows for higher order relations, but AFAIK is based on intuitionist logic and therefore lack the excluded-middle principle; that's generally a disadvantage for me.

I would also welcome any suggestions about modern logical programming systems which are less popular but more expressive/powerful.


Solution

  • Prolog was the first language which changed my point of view at programming. But later I found it to be not so high-level as I'd like to see it.

    Curry - I've tried only Munster CC, and found it somewhat inconvenient. Actually, at this point, I decided to stop ignoring Haskell.

    Mercury has many things which I wanted to see in Prolog. I have a really good expectation about the possibility to distinguish modes of rules. Programs written in Mercury should inspire compiler to do a lot of optimizations (I guess).