Name: Anonymous 2009-10-05 12:37
How the fuck do you write a pointless concatMapM?
concatMapM supposed to be? The type is hardly self-evident from the name.liftM concat . mapM what you want?
concatMapM f xs = do
xs' <- mapM f xs
return $ concat xs'liftM concat . mapM((return . concat) =<<) . mapM(Monad ((->) [a])) => (a -> [b]) -> [a] -> [b]
(fmap join .) . mapM