[Haskell-cafe] Aren't type system extensions fun? [Further analysis]

Isaac Dupree isaacdupree at charter.net
Thu May 29 09:34:50 EDT 2008


>> Another valid type for foo can be done AFAICS with intersection types:
>>
>>    foo :: (Char -> a /\ Bool -> b) -> (a,b)
>>
>> But I can not comment about their inference, or usefulness in practice.
> 
> Again, undecidable :) In fact, I believe that an inference algorithm for
> intersection types is equivalent to solving the halting problem. Type
> checking however is decidable, but expensive.

a.k.a. find some value that matches both Char->a and Bool->b for some a 
and b.  Could use type-classes to do it.

But why, when we can just use standard tuples instead?
foo :: (Char -> a , Bool -> b) -> (a,b)

Admittedly this function is isomorphic to type (Char,Bool)... but that's 
a different issue, with the arbitrariness of our choice of example function.

-Isaac


More information about the Haskell-Cafe mailing list