Next: Incompatibilities with R6RS, Previous: Incompatibilities with R5RS, Up: Language changes [Index]
This section enumerates the additional differences between this report and the “Revised5 report” [R5RS].
This list is not authoritative, but is believed to be correct and complete.
include, include-ci, and
cond-expand have been added to the base library; they have the
same semantics as the corresponding library declarations.
raise,
raise-continuable or error, and can be handled with
with-exception-handler and the guard syntax. Any object
can specify an error condition; the implementation-defined conditions
signaled by error have a predicate to detect them and accessor
functions to retrieve the arguments passed to error. Conditions
signaled by read and by file-related procedures also have
predicates to detect them.
define-record-type of SRFI 9 [srfi9].
make-parameter, and
dynamically rebound with parameterize. The procedures
current-input-port and current-output-port are now
parameter objects, as is the newly introduced
current-error-port.
read-line is provided to make line-oriented
textual input simpler.
flush-output-port is provided to allow minimal
control of output port buffering.
input-port-open? and output-port-open? return whether a
port is open or closed. The new procedure close-port now closes
a port; if the port has both input and output sides, both are closed.
write procedure now generates datum labels when applied to
circular objects. The new procedure write-simple never generates
labels; write-shared generates labels for all shared and
circular structure. The display procedure must not loop on
circular objects.
eof-object has been added. Eof-objects
are now required to be a disjoint type.
syntax-rules construct now allows the ellipsis symbol to be
specified explicitly instead of the default …, allows
template escapes with an ellipsis-prefixed list, and allows tail
patterns to follow an ellipsis pattern.
syntax-error syntax has been added as a way to signal
immediate and more informative errors when a macro is expanded.
letrec* binding construct has been added, and internal
define is specified in terms of it.
define-values, let-values, and let*-values.
Standard expression types which contain a sequence of expressions now
permit passing zero or more than one value to the continuations of all
non-final expressions of the sequence.
case conditional now supports => syntax analogous to
cond not only in regular clauses but in the else clause
as well.
case-lambda has been added in its own library.
when and unless have been
added.
eqv? on inexact numbers now conforms to the
R6RS definition.
eq? and eqv? are permitted to
return different answers.
boolean=? and symbol=? have been
added.
+inf.0, -inf.0, +nan.0, and
-0.0 respectively. Support for them is not required. The
representation -nan.0 is synonymous with +nan.0.
log procedure now accepts a second argument specifying
the logarithm base.
map and for-each are now required to
terminate on the shortest argument list.
member and assoc now take an optional
third argument specifying the equality predicate to be used.
finite?, infinite?, nan?,
exact-integer?, square, and exact-integer-sqrt
have been added.
- and / procedures and the character and string
comparison predicates are now required to support more than two
arguments.
#true and #false are now supported as well as
#t and #f.
make-list, list-copy, list-set!,
string-map, string-for-each, string->vector,
vector-append, vector-copy, vector-map,
vector-for-each, vector->string, vector-copy!, and
string-copy! have been added to round out the sequence
operations.
digit-value procedure has been
added to obtain the numerical value of a numeric character.
#; to skip the
next datum, and #| ... |# for nestable block comments.
#<n>= can be
referenced with #<n>#, allowing for reading and
writing of data with shared structure.
file-exists? and delete-file are available
in the (scheme file) library.
(scheme process-context) library.
(scheme time) library.
load procedure now accepts a second argument specifying the
environment to load into.
call-with-current-continuation procedure now has the synonym
call/cc.
dynamic-wind.
Next: Incompatibilities with R6RS, Previous: Incompatibilities with R5RS, Up: Language changes [Index]