Peter Verswyvelen wrote:
main = do
cs <- getLine
putStrLn ("Hello "++cs)
looks so much like
main = do
cs <- readFile "foo"
writeFile "foo" cs
but in the first one cs is strict, while the second it is lazy... But that's
not obvious.
Now I'm confused (which happens quite a lot, I'm afraid!)
Prelude> readFile undefined
*** Exception: Prelude.undefined
Prelude> readFile undefined >>= \cs -> putStrLn "Hello"
*** Exception: Prelude.undefined
It seems that readFile is strict in its argument. As for getLine, it has
no argument to be strict in.
What am I missing?
Dan
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe