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

From: William D Clinger <will>
Date: Wed, 20 Jun 2007 14:11:07 -0400

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 #', #`, #,, #,_at_ 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
Received on Wed Jun 20 2007 - 14:11:07 UTC

This archive was generated by hypermail 2.3.0 : Wed Oct 23 2024 - 09:15:01 UTC