> From: Daniel Fischer <daniel.is.fisc...@googlemail.com>
>
> On Friday 09 September 2011, 00:41:11, Roman Cheplyaka wrote:
>> * Ertugrul Soeylemez <e...@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.

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.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to