R5RS specifies that character predicates should return #f, and Guile's character predicates are implemented in terms of char-set-contains? R6RS says the same for char-set-contains?
The reason it bothers me is because it makes it cumbersome to deal with input from a port. Case in point: > $ grep "(and (not (eof-object\?" -R module > module/sxml/upstream/SSAX.scm: (and (not (eof-object? c)) > (char-alphabetic? c) c)) port))) > module/language/elisp/lexer.scm: (and (not (eof-object? tested)) > module/language/ecmascript/tokenize.scm: (and (not (eof-object? c)) > module/language/ecmascript/tokenize.scm: (cond ((and (not > (eof-object? c)) (char-numeric? c)) > module/language/ecmascript/tokenize.scm: (cond ((and (not > (eof-object? c)) (char-numeric? c)) > module/system/repl/repl.scm: (if (and (not (eof-object? ch)) > (char-whitespace? ch))