[Haskell-cafe] Is Curry alive?
wren ng thornton
wren at freegeek.org
Tue Nov 2 23:37:05 EDT 2010
On 11/2/10 7:09 AM, Sebastian Fischer wrote:
> On Nov 2, 2010, at 9:27 AM, Gregory Crosswhite wrote:
>> 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.
Indeed. If your program requires unification or constraint solving then
logic programming or constraint programming is the way to go.
However, if all you need is backtracking or search, then while
logic/constraint languages may be helpful because they have optimized
search combinators built in, but they don't offer anything particularly
interesting over doing search in functional programming.
Though I would suggest you look at the LogicT library instead of using
actual lists... Also, you may be interested in reading the LogicT
paper or this paper about search combinators in Haskell. Both
offer a number of optimizations you should be aware of.
 Or constraint-logic programming a la ECLiPSe:
More information about the Haskell-Cafe