Hi All,

Is there a program for expanding 'do' notation? I am trying to understand why the following code (from the Fannkuch entry) doesn't hold onto the list 'p' causing a space leak.

main = do n <- getArgs >>= return . read . head
          let p = permutations [1..n]
          mapM_ (putStrLn . concatMap show) $ take 30 p
          putStr $ "Pfannkuchen(" ++ show n ++ ") = "
          putStrLn . show $ foldl' (flip (max . steps 0)) 0 p

If I add a line which refers to 'p' at the end, there is a space leak.

          print (head p)

Thanks.

Cheers, David

---------without extra line

./Latest 9 +RTS -K256m -c -sstderr
123456789
...
Pfannkuchen(9) = 30
244,215,012 bytes allocated in the heap
    613,972 bytes copied during GC
      3,920 bytes maximum residency (1 sample(s))

        931 collections in generation 0 (  0.06s)
          1 collections in generation 1 (  0.00s)

          1 Mb total memory in use

  INIT  time    0.00s  (  0.01s elapsed)
  MUT   time    2.20s  (  2.72s elapsed)
  GC    time    0.06s  (  0.13s elapsed)
  EXIT  time    0.00s  (  0.00s elapsed)
  Total time    2.26s  (  2.86s elapsed)

  %GC time       2.7%  (4.5% elapsed)

  Alloc rate    111,006,823 bytes per MUT second

  Productivity  97.3% of total user, 76.9% of total elapsed

--------with extra line
./Latest 9 +RTS -K256m -c -sstderr
...
Pfannkuchen(9) = 30
[1,2,3,4,5,6,7,8,9]
244,216,248 bytes allocated in the heap
19,804,816 bytes copied during GC
10,586,416 bytes maximum residency (6 sample(s))

        931 collections in generation 0 (  0.96s)
          6 collections in generation 1 (  1.28s)

         18 Mb total memory in use

  INIT  time    0.00s  (  0.01s elapsed)
  MUT   time    2.30s  (  2.72s elapsed)
  GC    time    2.24s  (  3.15s elapsed)
  EXIT  time    0.00s  (  0.00s elapsed)
  Total time    4.54s  (  5.88s elapsed)

  %GC time      49.3%  (53.6% elapsed)

  Alloc rate    106,180,977 bytes per MUT second

  Productivity  50.7% of total user, 39.1% of total elapsed


--------------------------------
David F. Place
mailto:[EMAIL PROTECTED]

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

Reply via email to