
I think the Monoid instance for Data.Map should be *removed*. Reason: there are at least two meaningful instances. And, the documentation for the current instance is as out spoken as the fish in my non-existent aquarium: "" So, to use the Monoid instance, one has to consult the source code, just to see: instance (Ord k) => Monoid (Map k v) where mempty = empty mappend = union mconcat = unions Fantastic! I could never have though of these cunning implementations myself (sorry, sarcasm, I know). Why not trash these oneliners and free the Monoid instance for whatever the user wants it to do? Of course, I know, pragmatics, we cannot just remove functionality, might break existing code. But at least not silently. Maybe this could be sneaked in with another incompatible change of the Data.Map package? And after five years of having no Monoid instance, one could think of adding the most useful one. Or rather not, but have two newtypes with the respective meaningful implementations. Which we can also have here and now. On 19.05.2014 07:05, Henning Thielemann wrote:
Am 19.05.2014 02:05, schrieb Nick Partridge:
instance Monoid v => Monoid (Map k v) where mappend = unionWith mappend
This lets us build up maps with values in a useful Monoid, and mappend them with gusto.
This was discussed two years ago: http://www.haskell.org/pipermail/libraries/2012-April/017743.html
That said, I'd also prefer your instance.
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries
-- Andreas Abel <>< Du bist der geliebte Mensch. Department of Computer Science and Engineering Chalmers and Gothenburg University, Sweden andreas.abel@gu.se http://www2.tcs.ifi.lmu.de/~abel/