[R6RS] Changing the transcoding mid-stream

Michael Sperber sperber at informatik.uni-tuebingen.de
Wed Aug 23 13:13:35 EDT 2006

dyb at cs.indiana.edu writes:

> Good points.  This raises a question: If a call to lookahead-u8 returns
> eof, and the next operation on the port is a call to get-u8 or
> lookahead-u8, can the second call return something other than eof if the
> underlying file (or whatever) has been extended in the meantime?

No.  The EOF is part of the data stream, or at least that was the

> Is port-eof? just (lambda (port) (eof-object? (lookahead-u8 port)))?


> clear-input-port discards any buffered input; there's no where to flush
> it to.  It's useful in error handlers when reading input from the user
> to avoid mistaking earlier typeahead for an answer to a query.

I think using this type of low-level functionality from a portable
error handler will likely not get the desired result on all platforms,
especially those that do their own buffering underneath.

> Mike, if this wasn't an oversight that should simply be fixed by replacing
> call-with-whatever-output-port with open-whatever-output-port, can you
> explain the rationale?  Assuming there is a rationale, why doesn't it
> apply to the input versions?  Why doesn't it it apply to the file opener?
> Is there some reason that call-with-port won't suffice to handle all
> "call-with" situations?

Yes.  How do you get at the accumulated output?

Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla

More information about the R6RS mailing list