[Haskell-cafe] Re: type class question

Jules Bean jules at jellybean.co.uk
Mon Dec 10 07:29:26 EST 2007

Peter Padawitz wrote:
> What is so bad about making compFoo part of the class? It reduces the 
> code (constraints can be avoided) and reflects the close connection 
> between  a signature Sig (implemented by the class) and the evaluation 
> (compFoo) of Sig-terms in Sig-algebras.

making it part of the class allows instances to override the implementation.

Which in this case is a strange thing to do.

Class methods are ad-hoc. They can do *anything*.

Functions which happen to have constraints are something a bit more 
parametric. Their "ad-hoc-ness" is bounded by the methods of the class; 
they can only be implemented using methods, so they are guaranteed to be 
  uniform to some extent.

For example:

sort is a function with an Ord constraint. If sort was part of the Ord 
class, then every ordered type would be free to supply its own sort 
routine, possibly faster, possibly broken. Writing sort as a function 
rather than a method makes it generic (parametric) over all members of 
class Ord.


More information about the Haskell-Cafe mailing list