Currently, the two types are not the same. They used to be the same; see Section 4.6 of Practical type inference for higher rank types; but adding inference for impredicative types meant we had to remove deep skolemisation.
See also #1123.
I'm interested in gathering evidence for whether this change really matters to people. Did this arise in a real program?
Incidentally, another fix is just to eta-expand:
t1 :: a->(forall b. b->(a,b))
t1 x y = (,) x y
Powered by Trac 1.2
By Edgewall Software.
Visit the Trac open source project athttp://trac.edgewall.org/