[Haskell-cafe] Factoring into type classes

Miguel Mitrofanov miguelimo38 at yandex.ru
Mon Jan 19 15:53:30 EST 2009


I'd prefer something like

Sum :: Monoid Integer
Sum = Monoid {mappend = (+), mempty = 0}

Prod :: Monoid Integer
Prod = Monoid {mappend = (*), mempty = 1}

instance Sum in [some code using mempty and mappend]

On 19 Jan 2009, at 23:18, Alberto G. Corona wrote:

> 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
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe



More information about the Haskell-Cafe mailing list