1〜10000までの合計を求めるプログラム in Haskell
Prelude> sum $ take 10000 $ iterate (+1) 1 50005000 cmTypeOfName: it it :: Integer (0.06 secs, 3128088 bytes) Prelude> sum [1..10000] 50005000 cmTypeOfName: it it :: Integer (0.02 secs, 0 bytes) Prelude> foldr (+) 0 [1..10000] 50005000 cmTypeOfName: it it :: Integer (0.02 secs, 3200632 bytes) Prelude> sum $ take 10000 $ [1..] 50005000 cmTypeOfName: it it :: Integer (0.00 secs, 0 bytes)
必要になった分だけリストを生成して云々と聞いていたのに
どうして高階階数を使うとメモリが必要になるんだろう・・。