I am (+1) on adding Semigroup as superclass of Monoid, being mappend/(<>) included in Semigroup. More than once I felt encouraged to include a neutral element in a type where I would have gladly go without having it. Importing semigroups from Hackage would mean to have two identical operators, idea I do not find attractive.
About the path to choose for adoption, any of the ways described by Edward Kmett seems good to me (I can quickly update any of my packages to the change), but I'd rather avoid the longest one.
Daniel Díaz
That definitely pushes me towards one of the "long" adoption paths.Here adding a Semigroup instance for Matrix actually works to get the same symbol, but it has a different fixity (infixr 8). Same with (<>) in the pretty printing libraries (infixl 6).In Data.Monoid and Data.Semigroup we have infixr 6 <>-EdwardOn Mon, Mar 30, 2015 at 2:51 PM, Henning Thielemann <lemming@henning-thielemann.de> wrote:
On Mon, 30 Mar 2015, Edward Kmett wrote:
Collapse the first two steps into one step, but this means that nobody gets any warning of new names coming
into the Prelude. On the other hand this would get us all the way to done by 7.14. On one hand, the first
order consequence the amount of breakage caused by adding Semigroup to Prelude and taking (<>) is almost
entirely confined to a handful of pretty printing libraries -- and we already broke those same libraries by
taking (<$>).
Btw. hmatrix is another prominent package defining (<>) for matrix and related multiplications.
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries