mapM as a Space Leak (Was: [Haskell-cafe] about Haskell code written to be "too smart")

roconnor at roconnor at
Thu Mar 26 15:04:40 EDT 2009

On Wed, 25 Mar 2009, Thomas Hartman wrote:

> With the state version, there's a lot of behind-the-scenes magic, and
> as we've seen, things can go wrong.
> Also, the issue isn't infinite lists, but lists that are longer than
> the sum of the partitions provided. The state monad partition version
> goes equally as badly awry if the test is restructured as
> testP pf = mapM_ putStrLn  [
>          show . pf ( take 1000 [3,7..] ) $ [1..10]
>          , show . pf [3,7,11,15] $ ( take (10^6) [1..])
>          , show . head . last $ pf (take 1000 $ [3,3..]) [1..10^6]
>        ]

This is interesting.  It seems to be the familiar issue that sequence does 
not play as nicely with the GC as one might imagine:

I suspect this may be a general problem that we will keep encountering 
when using higher-order functions, at least with this compiler.  I wonder 
if JHC or some other compiler might work better with these examples?

Russell O'Connor                                      <>
``All talk about `theft,''' the general counsel of the American Graphophone
Company wrote, ``is the merest claptrap, for there exists no property in
ideas musical, literary or artistic, except as defined by statute.''

More information about the Haskell-Cafe mailing list