[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.
Jules
More information about the Haskell-Cafe
mailing list