<div dir="ltr"><div dir="ltr">it should be noted that this can be viewed as a special case of the witherable packages lovely interfaces<div><br></div><div><a href="http://hackage.haskell.org/package/witherable-0.3">http://hackage.haskell.org/package/witherable-0.3</a> , which has related things like <br></div><div><a id="gmail-v:witherM" class="gmail-def" style="margin:0px;padding:0px;font-weight:bold;color:rgb(0,0,0);font-family:monospace;font-size:13px">witherM</a><span style="color:rgb(0,0,0);font-family:monospace;font-size:13px;background-color:rgb(240,240,240)"> :: </span><a href="http://hackage.haskell.org/package/base-4.12.0.0/docs/Control-Monad.html#t:Monad" title="Control.Monad" style="margin:0px;padding:0px;text-decoration-line:none;color:rgb(171,105,84);font-family:monospace;font-size:13px">Monad</a><span style="color:rgb(0,0,0);font-family:monospace;font-size:13px;background-color:rgb(240,240,240)"> m => (a -> m (</span><a href="http://hackage.haskell.org/package/base-4.12.0.0/docs/GHC-Maybe.html#t:Maybe" title="GHC.Maybe" style="margin:0px;padding:0px;text-decoration-line:none;color:rgb(171,105,84);font-family:monospace;font-size:13px">Maybe</a><span style="color:rgb(0,0,0);font-family:monospace;font-size:13px;background-color:rgb(240,240,240)"> b)) -> t a -> m (t b)</span><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Feb 8, 2019 at 12:04 PM Carter Schonwald <<a href="mailto:carter.schonwald@gmail.com">carter.schonwald@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">friend asked me to raise this<div><br></div><div>previously <a href="https://ghc.haskell.org/trac/ghc/ticket/2042" target="_blank">https://ghc.haskell.org/trac/ghc/ticket/2042</a></div><div>seems like it iddn't happen last time because base lived outside of ghc?</div><div><br></div><div><pre class="gmail-m_5686313460767753459gmail-wiki" style="background:rgb(247,247,247);border:1px solid rgb(215,215,215);border-radius:0.3em;margin:1em 1.75em;padding:0.25em;overflow:auto;color:rgb(0,0,0);font-size:13px">-- | The 'concatMapM' function generalizes 'concatMap' to arbitrary monads.
concatMapM        :: (Monad m) => (a -> m [b]) -> [a] -> m [b]
concatMapM f xs   =  liftM concat (mapM f xs)</pre></div></div></div>
</blockquote></div>