[Haskell-cafe] class default method proposal

Twan van Laarhoven twanvl at gmail.com
Wed Dec 12 13:18:11 EST 2007


Simon Peyton-Jones wrote:
> Concerning (b) here's a suggestion.  As now, require that every instance requires an instance declaration.  So, in the main example of http://haskell.org/haskellwiki/Class_system_extension_proposal, for a new data type T you'd write
>         instance Monad T where
>           return = ...
>           (>>=)  = ...
> 
>         instance Functor T
>         instance Applicative T

Another alternative is to allow multiple classes in an instance declaration:

      instance (Monad T, Functor T, Applicative T) where
            return = ...
            (>>=)  = ...

The advantage is that this makes it more clear where the instances come 
from, especially if a class has multiple sub classes with different 
defaults. It also eliminates tricky issues with importing. Of course 
this needs some (albeit very little) new syntax.

I wrote a proposal a while ago, 
http://haskell.org/haskellwiki/Superclass_defaults

Twan


More information about the Glasgow-haskell-users mailing list