haskell - Why does `take` with a large number return [] even though the list is infinite? -
i have doubt on why haskell couldn't handle following line
prelude> take 1000000000000 $ repeat ' '
that line of code return:
""
which not 1,000,000,000,000 spaces.
if try 1 less zero, print long time.
and thing bothers me if write
prelude> repeat ' '
it work, being lot of more zeros.
so, why couldn't haskell print long time did repeat
alone?
are on 32 bit system? suspect 1000000000000 wraps int
negative number. it's equal 2^40
.
you can check what's going on entering 1000000000000 :: int
.
take
negative number returns empty list:
prelude> take (- 1) [1,2,3] []
for reference, take
takes int
:
prelude> :t take take :: int -> [a] -> [a]
Comments
Post a Comment