[Haskell-cafe] mapM is supralinear?

Daniel Fischer daniel.is.fischer at googlemail.com
Fri Sep 9 02:17:29 CEST 2011


On Friday 09 September 2011, 00:41:11, Roman Cheplyaka wrote:
> * Ertugrul Soeylemez <es at ertes.de> [2011-09-07 16:20:03+0200]
> 
> > In general it's a bad idea to use mapM over IO.
> 
> Could you explain why?

Take it with a grain of salt, there's nothing necessarily wrong with using 
mapM over IO on short lists.
The problem is that IO's semantics imply that nothing can be made available 
before the entire list has been consumed and a large thunk is built on the 
way. Thus for longish lists there's a serious risk of stack overflows (or 
even heap exhaustion if you mapM the right [wrong] functions).
The same applies to replicateM, and to other monads with a (>>=) which 
isn't lazy enough.



More information about the Haskell-Cafe mailing list