Version 5 (modified by chak@…, 12 years ago) (diff)

Class Method Types

Brief Explanation

In Haskell 98, s4.3.1, the signatures of methods in a class may contain constraints, but these constraints must not mention the argument of the type class. The following is illegal:

class Foo a where
    op :: Num a => a -> a -> a

The motivation was perhaps that without such constraints, class dictionaries could be represented as records with PolymorphicComponents.

However this restriction is not implemented by Hugs, following a suggestion of Mark Jones in Typing Haskell in Haskell, and can be turned off in GHC with -fglasgow-exts.



relax restriction on signatures of class methods