In the code below the function "trans" is accepted by GHC 6.4, but
"trans1" is not. I would expect that "(x,y)" is just syntactic sugar
for "(,) x y", but apparently it isn't. I guess this is a bug; can
anyone explain what is going on?
Cheers,
Arthur
The Code:
data Equal a b where
Eq :: Equal a a
trans :: forall a b c. Equal a b -> Equal b c -> Equal a c
trans = \x -> \y -> case (,) x y of
(Eq,Eq ) -> Eq
trans1 :: forall a b c. Equal a b -> Equal b c -> Equal a c
trans1 = \x -> \y -> case (x, y) of
(Eq,Eq ) -> Eq
The error message:
Test2.hs:9:0:
Quantified type variable `c' is unified with another quantified
type variable a
When trying to generalise the type inferred for `trans1'
Signature type: forall a b c. Equal a b -> Equal b c -> Equal
a c
Type to generalise: Equal a b -> Equal b a -> Equal a a
In the type signature for `trans1'
When generalising the type(s) for `trans1'
_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs