no non-typevariable in instance declarations

Malcolm Wallace
Tue, 14 Nov 2000 17:02:30 +0000

> class C a where
>     ty :: a -> String
> instance (Num a) => C a where
>     ty _ = "NUM"
> instance C Integer where
>     ty _ = "Integer"

> Why GHC and NHC98 are more restrictive than Hugs?

The instances for (Num a=> a) and Integer overlap, and are therefore
forbidden by Haskell'98.

Hugs allows overlapping instances.  So does GHC with a special flag
(-foverlapping-instances I think).  nhc98 does not provide type-system
extensions to Haskell'98.