Travis Erdman <[email protected]> wrote: > The performance of mapM appears to be supralinear in the length of the > list it is mapping on. Does it need to be this way? As a comparison, > both mapM_ and map are linear in the length of the list.
It needs to be this way in most monads. It's not a problem of mapM itself, but of its definition in the particular monad. In general it's a bad idea to use mapM over IO. For [] it will eat lots of memory quickly and by its mere definition there is nothing you can do about that. mapM_ is linear, because it can throw away the results, so no complicated accumulation occurs. map is usually linear, because used properly it will be optimized away leaving just a loop, which doesn't produce any data structures in memory and is just run element by element. Greets, Ertugrul -- nightmare = unsafePerformIO (getWrongWife >>= sex) http://ertes.de/ _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
