
10 Dec
2006
10 Dec
'06
12:31 a.m.
Hi -- I'm using ghc 6.6, and I had some questions about the extend of laziness and foldr. I've noticed the following:
x = foldr (:) [] [1..] (take 10) x
yields [1..10] Which is great.. however, what I'd like to fold the list over a tuple:
foo x (l,payload) = ((x:l), payload) (x,_) = foldr foo ([], Nothing) [1..] (take 10) x
Doesn't terminate, until the stack overflows So I'm clearly expecting ghc to be more psychic than it's currently capable. But what I'd like to do is pass an infinite list through a processing function which maintains some state (foo could easily be a pseudo random number generator), and take the first bit of it. Any help? Thanks, Ranjan Bagchi