Merijn Verstraaten <merijn@inconsistent.nl> 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].
Cheers,
- Ben
[1] https://hackage.haskell.org/package/monoidal-containers
[2] https://hackage.haskell.org/package/reducers-3.12.1/docs/ Data-Semigroup-Union.html
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries