Why the instance declaration ,
passing on Hug but failing on GHC 6.2.1?
Stefan Holdermans
sholderm at students.cs.uu.nl
Thu May 19 04:39:54 EDT 2005
Wukaichen,
> data People = A | B | C | D | E | F deriving (Show, Eq, Ord, Enum)
> data Pair a = Pair a a deriving Eq
>
> instance Show (Pair People) where
> show (Pair x y) = "<" ++ show x ++ ", " ++ show y ++ ">"
GHC is right, actually. Haskell 98 requires instance declarations to
have the form
instance (...) => C (T a1 ... an)
where a1 are type variables, not type constructors as in your example.
However, you can use the Glasgow extensions to get rid of this
restrictions. For example by adding
{-# OPTIONS -fglasgow-exts#-}
to the top of your file.
HTH,
Stefan
More information about the Glasgow-haskell-users
mailing list