Map with a different Monoid instance

Michael Snoyman michael at
Thu May 25 19:43:37 UTC 2017

On Thu, May 25, 2017 at 11:38 AM, Mario Blažević <mblazevic at>

> On 2017-05-25 12:55 PM, David Feuer wrote:
>> A lot of people have wrappers around Data.Map and Data.IntMap to give
>> them more useful (Semigroup and) Monoid instances. I'd like to add such
>> wrappers to containers. What we need to be able to do that are *names* for
>> the new modules. I can't think of any, so I'm reaching out to the list.
>> Please suggest names!
> Data.Map.Monoidal is not strictly correct but would give a pretty good
> idea at first glance.
> Data.Map.Symmetric would be more correct, since its Semigroup and Monoid
> instances would be symmetric, with no preference for the left argument as
> currently.
Just to throw out an option here: Unbiased. I don't feel strongly about it,
but thought throwing it out may be helpful.

> Another question is whether we should take the opportunity of new modules
>> to modernize and streamline the API a bit. I'd like, at least, to separate
>> "safe" from "unsafe" functions, putting the unsafe ones in .Unsafe modules.
>         I think it would be better to keep the API exactly the same, much
> like Data.Map.Strict does. I don't want to think about the incidental API
> differences when I switch from one module to another. If you're going to
> modernize, modernize all the modules at once. That's what version numbers
> are for.

+1. I'd also argue against changing the API right now.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Libraries mailing list