
On Fri, Nov 13, 2009 at 4:52 PM, Andrew Coppin
Stephen Tetley wrote:
2009/11/13 Rafael Gustavo da Cunha Pereira Pinto
: 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.)
But can't you say exactly the same about Monads? And at times it's useful to be able to switch between getting all results (List) and getting one (or none, Maybe), no? /M -- Magnus Therning (OpenPGP: 0xAB4DFBA4) magnus@therning.org Jabber: magnus@therning.org http://therning.org/magnus identi.ca|twitter: magthe