
On Thursday 04 November 2010 5:13:23 pm Gregory Crosswhite wrote:
On 11/02/2010 08:37 PM, wren ng thornton wrote:
Indeed. If your program requires unification or constraint solving then logic programming or constraint programming[1] is the way to go.
Would you be kind enough to give me or point me towards a good example of such a case? I've been trying to understand what the point of logic languages is for a while now, but whenever I look at them I have trouble seeing what exactly it is they offer that solves some problems better/more easily than functional languages.
Implementing type inference can be very easy in a logic language, because most of the work in a non-logic language is implementing unification: http://muaddibspace.blogspot.com/2008/01/type-inference-for-simply-typed- lambda.html 3 lines of Prolog to infer types for the simply typed lambda calculus with meta-variables (not counting the operator fixity declarations). I've written something similar in Haskell, and it's more like 80 lines of real code, a lot of which is implementing things that are simply part of Prolog's computation model. -- Dan