On 3 May 2011 13:26, Yitzchak Gale <g...@sefer.org> wrote: >> Both are "kind of, sort of" bringing you up to a Monoid though... > > altconcat and sconcatMaybe are doing that, because you > need to decide what to do with an empty list when you > define the instance. Holger's interface is not doing that, > because the type does not require you to say anything > about the case of an empty list in the instance.
Holger's interface is bringing you "kind of, sort of" up to a Monoid but it allows neutral of whatever value you fancy at the time. At which point, either you're working at directly at a type - so you don't really need the "idea" of a semigroup just its pretty (<>) operator, or you do actually have a neutral and thus were working with a Monoid all along - again you just wanted the pretty (<>) operator. My real contention is that Semigroup doesn't have a proper concat operation[*], though notationally it is seductive - I do use both altconcat and Holger's version in my own code. [*] I could be persuaded otherwise, but I can't see how it would be an analogue mconcat in Monoid. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe