
17 Sep
2008
17 Sep
'08
5:03 p.m.
Thomas Davie
In your application (id id) you create two instances of id, each of which has type forall a. a -> a, and each of which can be applied to a different type. In this case, the left one gets applied to the type (a -> a) and the right one a, giving them types (a -> a) -> (a -> a) and (a -> a) respectively.
Ah, I didn't realize it's because I created two instances of id, but it became clear immediately after you pointed this out. Thank you, Ryan and Thomas, for clarifying my confusion. Wei