[Haskell] Type Class Question

Paul Govereau govereau at eecs.harvard.edu
Mon Nov 21 19:20:41 EST 2005


I was hoping that someone could answer a question I have about the
type class system. In Haskell, I cannot write a term with an exact

> data X = X
> bar :: Show X => X -> String
> bar x = show x

According to the Haskell 98 report, a qualifier can only be applied to
type variables, but I don't see where the trouble is. The term seems
to have reasonable type, and I don't see any reason why the
dictionary-passing translation shouldn't work out; I am wondering what
problems you run into if this restriction is lifted?

Note, with GHC and Glasgow extensions you can write this program:

> data Y a = Y
> foo :: Show (Y a) => Y a -> String
> foo x = show x

However, the first program is still ruled out. Are there any
type-class experts out there that can offer an explanation?


More information about the Haskell mailing list