[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