I reported: > > Guile's peek-char has a bug; it incorrectly *consumes* eof instead of > > just reporting it.
Andy Wingo replied: > I have the feeling that for interactive use, if you expect to read a EOF > from a port and then continue, you have to not use peek-char. You need > to handle your own lookahead buffer. I know it's not a great answer, > but I can't think of anything else that makes sense. We don't want to read an EOF and then continue. We peek-char to not *CONSUME* an interactive EOF. Once peek-char returns EOF, every following peek-char should *also* return EOF until the EOF is read. That isn't what currently happens. E.G.: (define (demo) (write (peek-char)) (write (peek-char))) (demo) ; Now type control-D ENTER. ; It SHOULD produce #<eof> twice, after peeking EOF, ; but instead it produces #<eof> #\newline #<eof>#<eof>guile> (demo) --- David A. Wheeler