
25 Nov
2002
25 Nov
'02
5:09 a.m.
"Simon Marlow"
writes: One reason, I think, is lazy I/O(*). It's to stop you accidentally
[...]
(*) kill it! die! die!
So you want main = readFile "/dev/zero" >> return () to terminate violantly rather than terminate peacefully? :)
Seriously, I understand that the IO monad is the most intuitive and robust when it is strict. But sometimes it is also nice if one could map a file to a lazy string.
It is nice, but it introduces too many problems. What happens to any I/O errors encountered by the lazy I/O? They have to be discarded, which means you can't effectively use lazy I/O for robust applications anyway. Cheers, Simon