
12 Oct
2004
12 Oct
'04
12:20 p.m.
On 2004-10-12 at 18:07+0200 Christian Hofer wrote:
Hi,
having found a bit of time to play with Haskell, I am trying to figure out how to enforce strict evaluation. I wrote the following program:
main = let x = zipWith (+) [5..] [6..] in putStrLn $ show $ x `seq` head x
I expected this program not to terminate - because of the seq-Operator, but it happily returns 11 in ghc as well as in ghci. What do I make wrong?
head is strict in its first argument, so x `seq` head x is equivalent to head x. seq only evaluates to (w?)hnf. To do more you would need deepSeq. -- Jón Fairbairn Jon.Fairbairn@cl.cam.ac.uk