[Haskell-cafe] Redefining superclass default methods in a subclass

Roberto Zunino zunino at di.unipi.it
Thu Jan 4 17:44:03 EST 2007


Brian Hulley wrote:
> Hi,
> Looking at some of the ideas in 
> http://www.haskell.org/haskellwiki/The_Other_Prelude , it struck me that 
> the class system at the moment suffers from the problem that as 
> hierarchies get deeper, the programmer is burdened more and more by the 
> need to cut-and-paste method definitions between instances because 
> Haskell doesn't allow a superclass (or ancestor class) method default to 
> be redefined in a subclass.

The class aliases proposal lists several similar shortcomings of the 
current class system.

http://repetae.net/john/recent/out/classalias.html

> Perhaps there is some reason this can't be done?

Some random thoughts:

How one would write instances? Using your Monad class, does
    instance Monad F where
       return = ...
       (>>=) = ...
automatically define an instance for Applicative?

If it does: What if there already is such an instance? Which one gets 
used for (>>)? The user-defined one or the Monad default? Is separate 
compilation still possible? (If there is no instance right now, one 
might pop out in another module...)

If it does not: How can one define it, without copy-and-pasting the default?

Zun.


More information about the Haskell-Cafe mailing list