
On 14 August 2011 15:25, Yitzchak Gale
Thomas Schilling wrote:
The only reason Monoid is currently so much more common is because the semigroups package is fairly new. Semigroups are simple and quite ubiquitous. We should be strongly encouraging their use, not discouraging it by creating an awkward namespace clash.
Semigroups seem a lot less useful than monoids. They might be more ubiquitous, but there seems to be less you can do with them - e.g. sconcat in the Semigroup class is quite convoluted to avoid emptiness; a Writer-like thing without zero would be very strange (presumably it would actually have to be a state monad?). If semigroups don't support an operationally useful API, are they worth having from the documentary perspective - is it valuable to identify that you have semigroup "things" in your program when you have to use type specific operations to do anything useful on them?