Proposal: Remove Semigroup and Monoid instances for Data.Map, Data.IntMap, Data.HashMap

Mario Blažević mblazevic at
Wed Feb 14 14:47:55 UTC 2018

On 2018-02-14 04:08 AM, Evan Laforge wrote:
> On Wed, Feb 14, 2018 at 12:49 AM, Akio Takano <tkn.akio at> wrote:
>> I'm against this proposal because I think the improvement is, if not
>> negative, too small to justify breaking existing code.
> I agree for the same reasons.
> I also find that unions is the most common.  In my code, I have many
> uses of (<>) with the union meaning... it's hard to grep for, but I
> guess in the 40-80 range.  Meanwhile, I have a Util.Map.mappend that
> also mappends the values, and it's used in 2 places (out of around
> 140k lines).  It wouldn't be so bad to have to convert them all to
> Map.union, but doesn't seem worth the bother either.

	I understand it's hard to grep, but can you guess how many of those 
40-80 uses of (<>) with the union meaning actually depend on the 
left-biased semantics? I've looked at my code, and it turns out that 
wherever this operation appears, the two maps are guaranteed to have 
distinct keys.

	There is actually one use I'm not sure about, I'll have to make sure 
there's no bug hiding there. That is one reason I'm supporting the 
proposal, by the way: the existing behaviour that silently drops values 
is much more likely to cause bugs.

More information about the Libraries mailing list