Hi Gregory,

On Nov 2, 2010, at 9:27 AM, Gregory Crosswhite wrote:

I was thinking about using Curry, but it looks to me like the language is dead and hasn't seen much activity for a few years.

The community is smaller than the Haskell community but the PAKCS system is still actively developed. MCC is a compiler that generates C (rather than Prolog) code (which is often more efficient) but does not come with the same libraries as PAKCS.

Actually, the more that I think about my problem the more that I'm thinking I should just stick with the List monad.

If this is feasible then staying in Haskell might be a good choice.

Which does raise the question: when is it better to use a logic programming language instead of the list monad?

It is more cumbersome to model logic variables and unification in a pure functional language than having them provided natively. If you need unification or constraint solving then a language with built-in logic variables has an advantage.

An advantage of combining laziness with non-determinism as in Curry is that you can interleave the non-deterministic generation of nested data with categorizing it which is more efficient, if the evaluation function is lazy. This combination is more cumbersome in a pure functional language than in a lazy functional-logic language like Curry (see [1] for how to do it). If you always need to generate elements completely before you categorize them, you probably do not gain from lazy non-determinism.

Cheers,
Sebastian

 [1]: http://www-ps.informatik.uni-kiel.de/~sebf/data/pub/icfp09.pdf
      http://sebfisch.github.com/explicit-sharing/
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to