[r6rs-discuss] R6RS insanity check (was square brackets etc)

William D Clinger will at ccs.neu.edu
Wed Jun 20 14:11:07 EDT 2007


This is getting sillier and sillier.  I love it.

Sam TH wrote:
> > > Finally, the R6RS has admirably refrained from specifying too many
> > > proposals that had not previously been implemented, and that the
> > > community has no experience with.
> >
> > LOL!
> 
> According to the R6RS, the list of language changes is here:
> 
> http://www.r6rs.org/document/html-5.94/r6rs-Z-H-17.html
> 
> In that document, I would say that the vast majority have been
> implemented by some currently-extant Scheme implementation.

Say what you like.

The more relevant insanity check is whether any extant
implementation of Scheme implements even a bare majority
of the changes.  In fact, that's a much more interesting
topic than the one we've discussing, so I'm changing the
subject line.

I think Scheme 48 1.6, Larceny v0.94, and MzScheme v370
have implemented more of the R6RS changes than have any
other extant systems.  I haven't installed Scheme 48 1.6
yet, but let's see how many of the 86 listed changes
(some, such as the operational semantics, don't count)
have already been implemented by Larceny and MzScheme.
(I ran the Larceny tests in #!r6rs reader mode.)

                                * * *

                                                Larceny     MzScheme

Scheme source code now Unicode                     -           yes

Identifiers can start with ->                     yes          yes

Identifiers and symbols case-sensitive            yes          yes

Bytevector literal syntax                         yes           -

The read-syntax abbreviations #', #`, #,, #,@     yes          yes

Numbers may include mantissa width                 -            -

Literals for NaNs and infinities                  yes          yes

String and character escape sequences             yes           -

No #\newline syntax                               yes           -

Block and datum comments                          yes          yes

The !#r6rs comment                                yes           -

Characters correspond to Unicode scalar values    yes          yes

Procedures and forms moved into libraries          -            -

New syntax and procedures:
letrec*                                            -            -
let-values                                        yes          yes
let*-values                                       yes          yes
real-valued?                                       -            -
rational-valued?                                   -            -
integer-valued?                                    -            -
exact                                              -            -
inexact                                            -            -
finite?                                            -            -
infinite?                                          -            -
nan?                                               -            -
div                                                -            -
mod                                                -            -
div-and-mod                                        -            -
div0                                               -            -
mod0                                               -            -
div0-and-mod0                                      -            -
exact-integer-sqrt                                 -            -
boolean=?                                          -            -
symbol=?                                           -            -
string-for-each                                    -            -
vector-map                                         -            -
vector-for-each                                    -            -
error                                             yes           -
assertion-violation                               yes           -
assert                                            yes           -
call/cc                                            -           yes
identifier-syntax                                  -            -

Removed:
char-ready?                                        -            -
transcript-on                                     yes           -
transcript-off                                    yes           -
load                                               -            -

Case-insensitive comparisons use case-folding     yes          yes

Libraries added

Standard libraries:
(rnrs unicode (6))                                 -            -
(rnrs bytevector (6))                              -            -
(rnrs lists (6))                                   -            -
(rnrs sorting (6))                                 -            -
(rnrs control (6))                                 -            -
(rnrs records procedural (6))                      -            -
(rnrs records syntactic (6))                       -            -
(rnrs records inspection (6))                      -            -
(rnrs exceptions (6))                              -            -
(rnrs conditions (6))                              -            -
(rnrs i/o ports (6))                               -            -
(rnrs i/o simple (6))                              -            -
(rnrs files (6))                                   -            -
(rnrs programs (6))                                -            -
(rnrs arithmetic fx (6))                           -            -
(rnrs arithmetic flonum (6))                       -            -
(rnrs arithmetic bitwise (6))                      -            -
(rnrs syntax-case (6))                             -            -
(rnrs hashtables (6))                              -            -
(rnrs enum (6))                                    -            -
(rnrs (6))                                         -            -
(rnrs eval (6))                                    -            -
(rnrs mutable-pairs (6))                           -            -
(rnrs mutable-strings (6))                         -            -
(rnrs r5rs (6))                                    -            -

Many situations raise specific exceptions          -            -

The full numeric tower                            yes          yes

Semantics for transcendental functions             -            -

Semantics of expt for zero bases                  yes          yes

Syntax-rules allows _                             yes          yes

let-syntax and letrec-syntax don't introduce
a new environment for their bodies                 -            -

Semantics of NaNs and infinities                  yes          yes

Semantics of -0.0                                  -           yes

Reals have exact zero as imaginary part            -            -

Extended quasiquote                                -            -

Mutability of quasiquote structures specified      -            -

Dynamic environment specified for dynamic-wind     -            ?

Order and semantics for macro expansion            -            ?

Internal definitions use letrec*                  yes          yes

R5RS programs replaced by top-level programs       -            -


                                * * *

For those of you keeping score at home, that's 23/86 and 17/86,
with two I didn't bother to test.

As silly as it appears, this was a useful exercise for me.  It
lists the work we have yet to do in Larceny, and it also lists
the changes we can't rely on in MzScheme, which is currently
the only implementation other than Larceny that can be used to
build Larceny from source.

Will



More information about the r6rs-discuss mailing list