Breaking the semigroups instance breaks transitively almost every package I've written. Did you attempt to fix each of those and see what was broken downstream? I have 60+ packages that depend on semigroups alone, though I'm not sure how many use the union instance publicly.<div>
<br></div><div>I am really not a fan of the idea of an interim release where no instance exists, because it forces folks who do heavily use union to make a bunch of orphans that cannot work together or abandon this functionality entirely.</div>
<div><br></div><div>It effectively makes it impossible for users like me who need to support a wide-array of platforms. </div><div><br></div><div>If this change goes forward I'm going to have to go make a lot of code uglier, as a currently useful Monoid will be dead to me for years, until I can rely on it again portably across enough platforms to cover the window I've agreed to support for my many of my packages.</div>
<div><br></div><div>If that is the consensus I'll go along with it, but I'll miss the functionality.</div><div><div><br></div><div>-Edward<br><br><div class="gmail_quote">On Tue, Mar 12, 2013 at 11:19 AM, Ben Gamari <span dir="ltr"><<a href="mailto:bgamari.foss@gmail.com" target="_blank">bgamari.foss@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">Johan Tibell <<a href="mailto:johan.tibell@gmail.com">johan.tibell@gmail.com</a>> writes:<br>
<br>
> On Tue, Mar 12, 2013 at 8:06 AM, Ben Gamari <<a href="mailto:bgamari.foss@gmail.com">bgamari.foss@gmail.com</a>> wrote:<br>
><br>
>> 2) We decide it is acceptable to break users code multiple times, drop<br>
>> the Monoid instance and reintroduce the new instance after some<br>
>> delay. The length of this delay could range from no delay at all<br>
>> (allowing folks to quickly move to the new instance, although<br>
>> potentially unwittingly) to several months (hoping that most users<br>
>> will realize the change during this window).<br>
>><br>
><br>
> Before we even consider breaking user code we should see how much code will<br>
> be broken. If someone with spare cycles could download a copy of Hackage<br>
> and grep for uses of mappend on Data.Map that would be great.<br>
<br>
</div></div>It seems like Christian did a pretty good approximation to this[1] in January, no?<br>
<div class="im"><br>
After removing the Monoid instance for Map and IntMap, each reverse<br>
dependency of containers was separately compiled under a standard setup of<br>
GHC 7.6.1 in order to avoid shared dependency problems. Out of 1440 reverse<br>
dependencies, I could get 545 to compile. However, only the following<br>
packages fail because of Monoid instance issues:<br>
<br>
- caledon<br>
- data-default<br>
- dom-lt<br>
- EnumMap<br>
- i18n<br>
- semigroups<br>
- unamb-custom<br>
- vacuum<br>
- stringtable-atom<br>
<br>
</div>Given that the Monoid instance is completely gone in this test, this<br>
list should be a superset of the packages that will break due to the<br>
semantic change.<br>
<br>
Cheers,<br>
<br>
- Ben<br>
<br>
<br>
[1] <CALCpNBpcmEfG1moxX=<a href="mailto:CbHOS2LwNGeLEFbTyyfteJYPwMoLR9SQ@mail.gmail.com">CbHOS2LwNGeLEFbTyyfteJYPwMoLR9SQ@mail.gmail.com</a>><br>
</blockquote></div><br></div></div>