This section enumerates the changes that have been made to Scheme since the
"Revised^4 report" [6] was published.
-
The report is now a superset of the IEEE standard for Scheme [13]:
implementations that conform to the report will also conform to the standard.
This required the following changes:
-
The empty list is now required to count as true.
-
The classification of features as essential or inessential has been removed.
There are now three classes of built-in procedures: primitive, library, and
optional. The optional procedures are load, with-input-from-file,
with-output-to-file, transcript-on, transcript-off, and
interaction-environment, and - and / with more than two arguments. None of
these are in the IEEE standard.
-
Programs are allowed to redefine built-in procedures. Doing so will not change
the behavior of other built-in procedures.
-
Port has been added to the list of disjoint types.
-
The macro appendix has been removed. High-level macros are now part of the
main body of the report. The rewrite rules for derived expressions have been
replaced with macro definitions. There are no reserved identifiers.
-
Syntax-rules now allows vector patterns.
-
Multiple-value returns, eval, and dynamic-wind have been added.
-
The calls that are required to be implemented in a properly tail-recursive
fashion are defined explicitly.
-
`@' can be used within identifiers. `|' is reserved for possible future
extensions.