<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">Hi David,<br><br>Totally agreed.  I'm not quite sure how to approach the naming issue, either - there's definitely potential for confusion, which we need to try very hard to avoid.  However, the Monoid instance for Map is certainly something I've run into many times, and newtyping Map involves a pretty huge amount of boilerplate.<br><br>I also agree about separating safe and unsafe functions.  Especially with your new combinators in Data.Map.Merge and friends, I'd like to have a straightforward way to ensure we get rid of any unsafe functions in our code.<br><br><br>Best,<br>Ryan<br><font color="#500050"><br></font><span style="color:rgb(80,0,80)">On Thu, May 25, 2017 at 12:55 PM, David Feuer </span><span dir="ltr" style="color:rgb(80,0,80)"><<a href="mailto:david.feuer@gmail.com" target="_blank">david.feuer@gmail.com</a>></span><span style="color:rgb(80,0,80)"> wrote:</span><br><font color="#500050"><br></font><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><div class="gmail_quote"><div>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! 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.</div>
</div></div>
</div></div></blockquote></div><br></div></div>