[Haskell-cafe] Re: Numeric type classes
Henning Thielemann
lemming at henning-thielemann.de
Wed Sep 13 08:46:22 EDT 2006
On Wed, 13 Sep 2006, Lennart Augustsson wrote:
> The sum function really only needs the argument list to be a monoid.
> And the same is true for the product function, but with 1 and * as the monoid
> operators. Sum and product are really the same function. :)
... which got the same name, too, namely 'foldl'. 'sum' and 'product'
derive the operation and the neutral element from the operand types,
'foldl' expect them explicitly.
> I don't think Haskell really has the mechanisms for setting up an algebraic
> class hierarchy the right way. Consider some classes we might want to build:
> SemiGroup
> Monoid
> AbelianMonoid
> Group
> AbelianGroup
> SemiRing
> Ring
> ...
>
> The problem is that going from, say, AbelianMonoid to SemiRing you want to add
> a new Monoid (the multiplicative) to the class. So SemiRing is a subclass of
> Monoid in two different way, both for + and for *.
> I don't know of any nice way to express this is Haskell.
Thanks for confirming what I wrote. :-)
More information about the Haskell-Cafe
mailing list