[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[1] 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[2] or this paper[3] about search combinators in Haskell. Both
offer a number of optimizations you should be aware of.
[1] Or constraint-logic programming a la ECLiPSe:
http://eclipseclp.org/
[2] http://okmij.org/ftp/papers/LogicT.pdf
[3] http://web.cecs.pdx.edu/~apt/jfp01.ps
--
Live well,
~wren
More information about the Haskell-Cafe
mailing list