On Thu, Oct 02, 2003 at 11:48:29AM +0100, Simon Marlow wrote: > So... you agree that getContents in its current form should really be > called unsafeGetContents? Unless perhaps we redefine its semantics to > either (a) yield a random string or (b) eagerly slurp the entire stream > contents?
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 this will at least make it much harder for the lazyness of IO to bite an interactive user. reading from a tty has a real side effect from the users point of view, so should be done strictly, while in the case of a presumably immutable (over the course of the program) file it is simply a (useful) harmless optimization to have the file read lazily. of course this makes 'interact' not really interactive, but at least the semantics are clear when typing stuff at it, nothing happens until you finish. if people want line-by-line interactivity, don't rely on the evaluation strategy of a particular compiler, use Readline and monads. John -- --------------------------------------------------------------------------- John Meacham - California Institute of Technology, Alum. - [EMAIL PROTECTED] --------------------------------------------------------------------------- _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe