John Meacham wrote:
personally, I think the easiest solution would be to punt the whole issue by having:
getContents lazily read the file if it is mmapable or a pipe
eagerly slurp the whole file if it refers to a tty
I think this kind of irregular behaviour would make the IO functions even more difficult to understand. Why should some invokations of the same program exhibit utterly different space/time behaviour from others?! mycomputer% ./myprogram mycomputer% cat | ./myprogram mycomputer% ./myprogram <myfile mycomputer% luit ./myprogram
of course this makes 'interact' not really interactive,
Exactly, it defeats the whole purpose of the interact function (to provide support for Landin-stream IO), so you might just as well remove it completely... -- Thomas H