On Fri, Nov 13, 2009 at 8:52 AM, Andrew Coppin <andrewcop...@btinternet.com>wrote:
> Stephen Tetley wrote: > >> 2009/11/13 Rafael Gustavo da Cunha Pereira Pinto < >> rafaelgcpp.li...@gmail.com>: >> >> >>> Monoid is the category of all types that have a empty value and an append >>> operation. >>> >>> >>> >> >> Or more generally a neutral element and an associative operation: >> >> The multiplication monoid (1,*) >> >> 9*1*1*1 = 9 >> >> 1 is neutral but you might be hard pressed to consider it _empty_. >> >> > > This is the thing. If we had a class specifically for containers, that > could be useful. If we had a class specifically for algebras, that could be > useful. But a class that represents "any possible thing that can technically > be considered a monoid" seems so absurdly general as to be almost useless. > If you don't know what an operator *does*, being able to abstract over it > isn't especially helpful... > > ...in my humble opinion. (Which, obviously, nobody else will agree with.) Well to your credit, many people wonder what it means for something to implement the Monoid interface, or even why the Monoid interface is useful. Programmers who don't know what Monoids are may not be aware of the varying alternatives of Monoid implementations. They're curious things to have, but are they useful? :-) Sum vs Product spells out two ways to use Ints in a Monoid context. But we could have done the same with the Functor implementation for lists via fmap now couldn't we? Is anyone really using Sum and Product where Functors get the job done? Practically speaking, I can explain to coworkers the concept of a Functor a lot easier than Monoids so I don't choose to use Monoids explicitly in my code. I do use MonadPlus though, especially with Maybe as it makes a nice short-circuit syntax around alternatives for potential Nothing results. So in a way I'm possibly shooting myself in the foot if I have to explain the code to someone who was expecting a case or an if expression. > > > _______________________________________________ > 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