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
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe