[Haskell-cafe] Simple type-class experiment turns out not so simple...

Steve Horne sh006d3592 at blueyonder.co.uk
Mon Jan 9 10:37:06 CET 2012


On 08/01/2012 21:13, Brandon Allbery wrote:
>
> (Also, de facto I think it's already more or less been decided in 
> favor of type families, just because functional dependencies are (a) a 
> bit alien [being a glob of Prolog-style logic language imported into 
> the middle of System Fc] and (b) [as I understand it] difficult to 
> verify that the code in the compiler is handling all the potential 
> corner cases right [mainly because of (a)].
>
Without meaning to express an opinion either way about an issue I don't 
understand...

Isn't Haskell doing some prolog-ish things anyway?

I thought the compiler must be doing unification to resolve type 
inference within expressions. It's not a simple expression evaluation 
problem (just evaluate the type rather than the value) because sometimes 
you know the return type but not (yet) the argument types - type 
information flows bottom-up and top-down through the same expression tree.

I could easily be mistaken, though. Looking at the similar 
overload-resolution problem, Ada can resolve based on return types but 
C++ cannot. Ada needs unification or something similar to resolve 
overloading, whereas C++ just evaluates expressions for type instead of 
value.

I can't now say for sure where I picked up the idea that Haskell needs 
unification to resolve type inference, but I've had some odd error 
messages which seem to confirm that belief - I assume because the 
mistake doesn't cause an immediate conflict, instead causing an indirect 
conflict somewhere else in the larger expression.




More information about the Haskell-Cafe mailing list