[Haskell-cafe] Generating a random list
mhasan at cs.cornell.edu
Sat Mar 1 01:50:55 EST 2008
so let's say I want to generate a list of N random floats. The elegant
way of doing it would be to create an infinite lazy list of floats and
take the first N, but for N = 1,000,000 or more, this overflows the
stack. The reason is apparently that the take function is not
tail-recursive, and so it uses O(N) stack space..
What is the right way to do this? Sure, I could write my own
tail-recursive generator function. But this seems to be an instance of a
more general problem - how to avoid algorithms linear in stack space
when dealing with large lists.
Thanks a lot!
More information about the Haskell-Cafe