PROPOSAL: Add Map/IntMap newtypes for different Monoid to containers

Ben Gamari ben at
Fri Mar 24 17:34:09 UTC 2017

Merijn Verstraaten <merijn at> writes:

> I would like to propose adding a newtype wrapper (with all relevant
> instances) for Map and IntMap (if I missed any other applicable type
> in containers, let me know).
> This newtype should differ in Monoid/Semigroup instance from Map/IntMap by switching:
> Ord k => Semigroup (Map k v)
> Ord k => Monoid (Map k v)
> to:
> (Ord k, Semigroup v) => Semigroup (Map k v)
> (Ord k, Monoid v) => Monoid (Map k v) or (Ord k, Semigroup v) => Monoid (Map k v)
> Any opinions on the overall idea? Opinions on which Monoid instance?
> Bikeshed for the newtype names?
For what it's worth, I provide precisely this in my monoidal-containers
package [1]. Also, Edward Kmett provides a similar idea in his reducers
package [2].


- Ben

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 487 bytes
Desc: not available
URL: <>

More information about the Libraries mailing list