A more useful Monoid instance for Data.Map

Ben Gamari bgamari.foss at gmail.com
Tue Mar 12 16:19:25 CET 2013

Johan Tibell <johan.tibell at gmail.com> writes:

> On Tue, Mar 12, 2013 at 8:06 AM, Ben Gamari <bgamari.foss at gmail.com> wrote:
>>   2) We decide it is acceptable to break users code multiple times, drop
>>      the Monoid instance and reintroduce the new instance after some
>>      delay. The length of this delay could range from no delay at all
>>      (allowing folks to quickly move to the new instance, although
>>      potentially unwittingly) to several months (hoping that most users
>>      will realize the change during this window).
> Before we even consider breaking user code we should see how much code will
> be broken. If someone with spare cycles could download a copy of Hackage
> and grep for uses of mappend on Data.Map that would be great.

It seems like Christian did a pretty good approximation to this[1] in January, no?

     After removing the Monoid instance for Map and IntMap, each reverse
     dependency of containers was separately compiled under a standard setup of
     GHC 7.6.1 in order to avoid shared dependency problems. Out of 1440 reverse
     dependencies, I could get 545 to compile. However, only the following
     packages fail because of Monoid instance issues:

     - caledon
     - data-default
     - dom-lt
     - EnumMap
     - i18n
     - semigroups
     - unamb-custom
     - vacuum
     - stringtable-atom

Given that the Monoid instance is completely gone in this test, this
list should be a superset of the packages that will break due to the
semantic change.


- Ben

[1] <CALCpNBpcmEfG1moxX=CbHOS2LwNGeLEFbTyyfteJYPwMoLR9SQ at mail.gmail.com>

More information about the Libraries mailing list