[Haskell-cafe] strict mapM implementation correctness
paolo.losi at gmail.com
Mon Nov 9 17:07:28 EST 2009
while coding recently I came across the need for
a strict mapM (that I indicidently use for m = MaybeT IO).
I implementented this with the following simple code
(it works for my use case):
mapM' :: Monad m => (a-> m b) -> [a] -> m [b]
mapM' _  = return 
mapM' f (x:xs) = do y <- f x
ys <- y `seq` mapM' f xs
Now a couple of questions:
1. is it so "rare" to need such a beast? Why there isn't anything
like that in standard libraries?
2. Is my implementation correct?
3. I've seen that mapM is implemented in base via sequence
(which is in turn based on foldr). Is that any specific
reason to prefer base implementation to mine?
More information about the Haskell-Cafe