<div dir="ltr"><div>Hi Richard,</div><div><br></div><div>I've been guilty of slipping in similar instances myself. In fact, I like OrdList better than Bag precisely because it has more instances and thus a far better interface.</div><div>Not being able to see whether mempty denotes a Bag should be as simple as a mouse hover with HLS set up.<br></div><div>So a +99 from me.</div><div><br></div><div>Cheers,<br></div><div>Sebastian<br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Am Mi., 14. Apr. 2021 um 20:28 Uhr schrieb Richard Eisenberg <<a href="mailto:rae@richarde.dev">rae@richarde.dev</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi devs,<br>
<br>
In the work on simplifying the error-message infrastructure (heavy lifting by Alfredo, in cc), I've been tempted (twice!) to add<br>
<br>
> instance Semigroup (Bag a) where<br>
>   (<>) = unionBags<br>
> <br>
> instance Monoid (Bag a) where<br>
>   mempty = emptyBag<br>
<br>
to GHC.Data.Bag.<br>
<br>
The downside to writing these is that users might be tempted to write e.g. mempty instead of emptyBag, while the latter gives more information to readers and induces less manual type inference (to a human reader). The upside is that it means Bags work well with Monoid-oriented functions, like foldMap.<br>
<br>
I favor adding them, and slipped them into !5509 (a big commit with lots of other stuff). Alfredo rightly wondered whether this decision deserved more scrutiny, and so I'm asking the question here.<br>
<br>
What do we think?<br>
<br>
Thanks,<br>
Richard<br>
_______________________________________________<br>
ghc-devs mailing list<br>
<a href="mailto:ghc-devs@haskell.org" target="_blank">ghc-devs@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
</blockquote></div>