
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
2009/1/19 Luke Palmer : On Mon, Jan 19, 2009 at 3:58 AM, Patai Gergely
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@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe