David Menendez wrote:
That's a reasonable thing to assume. It just happens that Haskell
doesn't work that way. There's an asymmetry between constructing and
pattern-matching, and it's one that many people have complained about.
With GADTs turned on (-XGADTS in 6.8, -fglasgow-exts in 6.6) pattern
matchings will give rise to class contexts as you would naively expect.
Contexts on constructors aren't actualy haskell98, it is a bug that GHC
6.6 accepts them without any extensions being activated. Or that's my
understanding, see http://hackage.haskell.org/trac/ghc/ticket/1901
Haskell-Cafe mailing list