[Haskell] Types of when and unless in Control.Monad

Andres Löh andres at well-typed.com
Tue Jun 5 23:07:26 CEST 2012

> Btw. the mapM memory leak can be easily and accidentally resurrected by
> writing
>  when_ b (mapM f xs)
> with
>  f :: a -> m ()
>  when_ :: Bool -> m a -> m ()

I don't understand the whole mapM analogy (yet). I don't need when_ to
get into trouble with using mapM. Also, whether a space leak with mapM
arises or not typically doesn't depend on whether you use its result
or not. It's the other way round: if you run mapM on a huge list but
aren't interested in the results, then you should use mapM_ instead.
So the problem here is accidentally producing a (large) result rather
than accidentally ignoring it.


Andres Löh, Haskell Consultant
Well-Typed LLP, http://www.well-typed.com

More information about the Libraries mailing list