Richard Eisenberg <r...@richarde.dev> writes: > Hi devs, > > In the work on simplifying the error-message infrastructure (heavy lifting by > Alfredo, in cc), I've been tempted (twice!) to add > >> instance Semigroup (Bag a) where >> (<>) = unionBags >> >> instance Monoid (Bag a) where >> mempty = emptyBag > > to GHC.Data.Bag. > > 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. > > 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. > My sense is that adding the instances is a Good Thing. However, I do think that we probably ought to refrain from using (<>) and mempty where more specific functions would do. Adding a lint would be one way to accomplish this. Hiding the functions from GhcPrelude would be another.
Cheers, - Ben
signature.asc
Description: PGP signature
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs