-
Notifications
You must be signed in to change notification settings - Fork 32
TaskList
Felix S. Klock II edited this page Jul 28, 2013
·
1 revision
== Changes Listed by the R6RS ==
The current draft R6RS contains a list of differences between the R5RS and draft R6RS. The table below uses an edited version of that list to show which changes have been implemented in the R5RS and R6RS modes of Larceny's current development version and in the R5RS mode of MzScheme v371.
(MzScheme's R5RS mode is relevant because we want to be able to cross-compile and to build Larceny using either Larceny or MzScheme. MzScheme v4.0.2 is so different from MzScheme v371 that we can't use it to build Larceny. For now, we are continuing to use MzScheme v37x.)
Larceny Larceny MzScheme
R5RS R6RS R5RS
Scheme source code now Unicode - yes yes
Identifiers can start with -> yes yes yes
Identifiers and symbols case-sensitive yes yes yes
Bytevector literal syntax yes yes -
The read-syntax abbreviations #', #`, #,, #,@ yes yes yes
Numbers may include mantissa width yes yes -
Literals for NaNs and infinities yes yes yes
String and character escape sequences yes yes -
No #\newline syntax yes yes -
Block and datum comments yes yes yes
The !#r6rs comment yes yes -
Characters correspond to Unicode scalar values yes yes yes
Procedures and forms moved into libraries - yes -
New syntax and procedures:
letrec* yes yes -
let-values yes yes yes
let*-values yes yes yes
real-valued? yes yes -
rational-valued? yes yes -
integer-valued? yes yes -
exact yes yes -
inexact yes yes -
finite? yes yes -
infinite? yes yes -
nan? yes yes -
div yes yes -
mod yes yes -
div-and-mod yes yes -
div0 yes yes -
mod0 yes yes -
div0-and-mod0 yes yes -
exact-integer-sqrt yes yes -
boolean=? yes yes -
symbol=? yes yes -
string-for-each yes yes -
vector-map yes yes -
vector-for-each yes yes -
error yes yes -
assertion-violation yes yes -
assert yes yes -
call/cc yes yes yes
identifier-syntax - yes -
Case-insensitive comparisons use case-folding yes yes yes
Libraries added - yes -
Standard libraries:
(rnrs unicode (6)) - yes -
(rnrs bytevector (6)) - yes -
(rnrs lists (6)) - yes -
(rnrs sorting (6)) - yes -
(rnrs control (6)) - yes -
(rnrs records procedural (6)) - yes -
(rnrs records syntactic (6)) - yes -
(rnrs records inspection (6)) - yes -
(rnrs exceptions (6)) - yes -
(rnrs conditions (6)) - yes -
(rnrs i/o ports (6)) - yes -
(rnrs i/o simple (6)) - yes -
(rnrs files (6)) - yes -
(rnrs programs (6)) - yes -
(rnrs arithmetic fx (6)) - yes -
(rnrs arithmetic flonum (6)) - yes -
(rnrs arithmetic bitwise (6)) - yes -
(rnrs syntax-case (6)) - yes -
(rnrs hashtables (6)) - yes -
(rnrs enum (6)) - yes -
(rnrs (6)) - yes -
(rnrs eval (6)) - yes -
(rnrs mutable-pairs (6)) - yes -
(rnrs mutable-strings (6)) - yes -
(rnrs r5rs (6)) - yes -
Many situations raise specific exceptions - yes -
The full numeric tower yes yes yes
Semantics for transcendental functions - ? [1] -
Semantics of expt for zero bases yes yes yes
Syntax-rules allows _ yes yes yes
let-syntax and letrec-syntax splice bodies - yes -
Semantics of NaNs and infinities yes yes yes
Semantics of -0.0 - yes yes
Reals have exact zero as imaginary part - yes [1] -
Extended quasiquote - yes -
Mutability of quasiquote structures specified - ? -
Dynamic environment specified for dynamic-wind yes yes ?
Order and semantics for macro expansion - yes ?
Internal definitions use letrec* yes yes yes
R5RS programs replaced by top-level programs - yes -
Most of the new R6RS procedures have been added to Larceny's standard R5RS mode, but not as libraries.
[1] not yet implemented for Common Larceny