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

Andrew Coppin andrewcoppin at btinternet.com
Mon May 26 17:35:03 EDT 2008


Thomas Davie wrote:
> This is perhaps best explained with an example of something that can 
> be typed with rank-2 types, but can't be typed otherwise:
>
> main = f id 4
>
> f g n = (g g) n
>
> We note that the same instance of id must be made to have both the 
> type (Int -> Int) and ((Int -> Int) -> (Int -> Int)) at the same 
> time.  Rank 2 types allows us to do this.

What a perplexing example! :-}

Well anyway, I was under the impression that id :: x -> x, so I'm not 
really sure why this wouldn't work without Rank-2 types...



More information about the Haskell-Cafe mailing list