[Haskell-cafe] GHC + interactive input/output

Richard A. O'Keefe ok at cs.otago.ac.nz
Sun Feb 10 18:37:27 EST 2008


On 9 Feb 2008, at 2:29 pm, Philip Weaver wrote:

> GHC certain *could* do this, but it's arguably not the right thing  
> to do.


I have reminded the GHC maintainers before that the Haskell  
specification
*REQUIRES* a Haskell system to support this; there is an example that  
makes
no sense whatever without it.  (And the other Haskell systems I use  
get it
right.)

I note that David Bacon's SETL implementation has explicit support for
tying an input stream and an output stream together so that any time  
input
is done on the input stream the output stream is flushed; this is done
automatically for sockets and is *seriously* useful in avoiding  
mistakes.

Note that this should make essentially no difference to performance  
because
(a) the flushing is only needed when the input buffer is exhausted,  
which
     happens once per line,
(b) the kinds of streams where you want it (terminals, STREAMs, sockets,
     serial ports, &c) generally have other costs so high you won't be
     able to measure this one,
(c) it *only* applies to bidirectional streams or to explicitly coupled
     streams, so I/O to disc files or memory sticks or other high speed
     block devices should never be affected at all (unless someone  
chooses
     to do it explicitly, in which case it's still going to be faster  
than
     anything they could have done by hand).




More information about the Haskell-Cafe mailing list