Type signature normalization
t1 :: a->(forall b. b->(a,b))
-- isn't this the same as forall a b. a->b->(a,b)
t1 = (,)
causes
Inferred type is less polymorphic than expected
Quantified type variable `b' escapes
Probable cause: `(,)' is applied to too few arguments
In the expression: (,)
In the definition of `t1': t1 = (,)
The problem goes away without the explicit signature. -- Kefer