[Haskell-cafe] Simple network client

Peter Verswyvelen bf3 at telenet.be
Wed Jan 30 16:55:31 EST 2008

> And even better is
> main = do
>    cs <- strictReadFile "L:/Foo.txt"
>    writeFile "L:/Foo.txt" cs

Yes. By making these mistakes I understand the problem very well now. But it
*is* hard to see if the function in question is strict or lazy. 

For example, the problem to me appears to be that this code:

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. It would be if it looked like e.g:

main = do
	cs <- getLine!
	putStrLn! ("Hello "++cs)

or something similar.

Also, once I'm in the "do" syntax, my mind seems to switch to "imperative
mode", while of course, it is still purely functional code in desguise :)


More information about the Haskell-Cafe mailing list