<div><div dir="auto">That does seem nice.  </div><div dir="auto"><br></div><div dir="auto">I don’t actually have a horse in this race mind you , I was merely relaying a privately communicated from a friend proposal for feedback about its merits etc. </div><br><div class="gmail_quote"><div dir="ltr">On Fri, Feb 8, 2019 at 12:57 PM Evan Laforge <<a href="mailto:qdunkan@gmail.com">qdunkan@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">As long as we're playing the permutation game, I also frequently use<br>
mconcatMap, and mconcatMapM.  Actually, my concatMapM is secretly<br>
'(Monad m, Monoid b) => (a -> m b) -> [a] -> m b', but I suppose you<br>
could argue that's inconsistent with the existing naming scheme.<br>
<br>
I guess I don't mind it because unlike the generalization of [a] to<br>
Foldable a, I haven't had ambiguity problems with generalizing [a] to<br>
Monoid a.  Just personal experience though.<br>
<br>
On Fri, Feb 8, 2019 at 9:04 AM Carter Schonwald<br>
<<a href="mailto:carter.schonwald@gmail.com" target="_blank">carter.schonwald@gmail.com</a>> wrote:<br>
><br>
> friend asked me to raise this<br>
><br>
> previously <a href="https://ghc.haskell.org/trac/ghc/ticket/2042" rel="noreferrer" target="_blank">https://ghc.haskell.org/trac/ghc/ticket/2042</a><br>
> seems like it iddn't happen last time because base lived outside of ghc?<br>
><br>
> -- | The 'concatMapM' function generalizes 'concatMap' to arbitrary monads.<br>
> concatMapM        :: (Monad m) => (a -> m [b]) -> [a] -> m [b]<br>
> concatMapM f xs   =  liftM concat (mapM f xs)<br>
><br>
> _______________________________________________<br>
> Libraries mailing list<br>
> <a href="mailto:Libraries@haskell.org" target="_blank">Libraries@haskell.org</a><br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div></div>