[Haskell-cafe] Factoring into type classes

Alberto G. Corona agocorona at gmail.com
Mon Jan 19 15:18:03 EST 2009


This is one of the shortcomings of haskell not to mention other programming
languages. Mathemathicist would find it very annoying.
Instead of

instance Monoid Integer where
    mappend = (+)
    mempty = 0

instance Monoid Integer where
    mappend = (*)
    mempty = 1


which is not legal and the workaround

Num a => Monoid (Sum a)

Num a => Monoid (Product a)

wich is cumbersome

A mathematician  would say something like:

instance Monoid Integer with operation + where
    mappend = (+)
    mempty = 0

and

instance Monoid Integer with operation * where
    mappend = (*)
    mempty = 1


But talking about shortcomings, personally I prefer to implement first a
form of assertion that permits the checking of the  class properties
automatically for each new instance.

This is far more important in práctical terms.


2009/1/19 Thomas DuBuisson <thomas.dubuisson at gmail.com>

> 2009/1/19 Luke Palmer <lrpalmer at gmail.com>:
> > On Mon, Jan 19, 2009 at 3:58 AM, Patai Gergely <
> patai_gergely at fastmail.fm>
> > wrote:
> >>
> >> However, there are other type classes that are too general to assign
> >> such concrete uses to. For instance, if a data structure can have more
> >> than one meaningful (and useful) Functor or Monoid instance,
> >
> > As a side curiosity, I would love to see an example of any data structure
> > which has more than one Functor instance.  Especially those which have
> more
> > than one useful functor instance.
> > Luke
>
> The recent, and great, blog post about moniods [1] discusses the fact
> that (Num a) could be one of several different monoids and how that
> was handled.
>
> [1] http://sigfpe.blogspot.com/2009/01/haskell-monoids-and-their-uses.html
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20090119/5f27c233/attachment.htm


More information about the Haskell-Cafe mailing list