
From: Daniel Fischer
On Friday 09 September 2011, 00:41:11, Roman Cheplyaka wrote:
* Ertugrul Soeylemez
[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.
Agreed. Whenever I'd like to use mapM (or any other function for which a *M_ is available), I've found the following rules helpful: 1. If I can guarantee the list is short (~ n<=20), go ahead and use mapM 2. Otherwise use mapM_, foldM_, or foldM if a real reduction is possible (i.e. not "foldM snocM []"). Step 2 sometimes requires changing my design, but it's always been for the better. `mapM_` tends to require more pipeline composition, so it's leveraging the language's strengths. This has served me well, especially in IO, but in other monads as well. John L.