The editorial committee charged with preparing the next version of the language definition for Scheme has produced another status report. Here are the high points:
There will be a mechanism for defining record types.
There will be mechanisms for raising and handling exceptions.
Character and string procedures will be redesigned to fit Unicode rather
than ASCII. If the
editors' current proposal is implemented, as seems likely, conversions
and case-insensitive comparisons will depend on Unicode's intricate
case-folding specifications, including the pathological oddities of the
German eszet -- e.g., (string-length foo) is not equal to
(string-length (string-upcase foo)) when foo
contains one or more eszets.
The more elaborate and more powerful syntax-case mechanism for
defining macros will become standard (in addition to
syntax-rules).
Many of the procedures specified by the current language definition will be separated from the core language and put in libraries. I imagine, however, that the behavior of these standard library procedures will still be defined in the R6RS report.
Program texts and symbol literals will be case-sensitive.
There will be a new kind of expression, the
letrec*-expression, similar to the
letrec-expressions except that the bindings are introduced
sequentially, from left to right, rather than as a group. Internal
definitions, which are currently macro-expanded into
letrec-expressions, will instead be macro-expanded into
letrec*-expressions. This means that they can be cumulative
but cannot be mutually recursive.
There will be block comments, with #| and |# as
the opening and closing delimiters. Also, prefixing #; to any
expression will convert that expression into a comment, effectively making
it invisible to the evaluator.