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)

必要になった分だけリストを生成して云々と聞いていたのに
どうして高階階数を使うとメモリが必要になるんだろう・・。