
Hi folks, Quick question for you. Suppose I have some lazy list, x, which is very expensive to evaluate, and I want to do something with it more than once; for example: f x = g (take 5 x) (take 6 x) Is Haskell clever enough to only evaluate the list as much as is needed, or will it evaluate it once to get the first five values, and again to get the first 6 (when really it only needed to get one more). Or is it really really clever, and works out it needs to take 6 to begin with, then just give you the first 5 for the first call? More tricky - is there a way to make that cache (if it exsists) persist in an interactive session? Eventually I am intending to write my own application with a little console at the bottom which does some ghci-esque magic, but for now lets say I am in ghci and I want to call f again with the same list. Is there a way to avoid it from forcing a recomputation of my lazy list? Any advice greatly appreciated, Philip