# R5RS countdown


Here is the latest list of changes that I have made to the
February 11, 1998 draft of R5RS.  I believe that this corrects
all of the errors pointed out so far.  I am still planning on
releasing R5RS to an eagerly awaiting world tomorrow, Friday,
February 20th.
-Richard Kelsey

The description of scheme-report-environment' and
null-environment' now reads:

(scheme-report-environment _version_)                procedure
(null-environment _version_)                         procedure

\var{Version} must be the exact integer {\cf 5},
corresponding to this revision of the Scheme report (the
Revised$^5$ Report on Scheme).
{\cf Scheme-report-environment} returns a specifier for an
environment that is empty except for all bindings defined in
this report that are either required or both optional and
supported by the implementation. {\cf Null-environment} returns
a specifier for an environment that is empty except for the
(syntactic) bindings for all syntactic keywords defined in
this report that are either required or both optional and
supported by the implementation.

Other values of \var{version} can be used to specify environments
matching past revisions of this report, but their support is not
required.  An implementation will signal an error if \var{version}
is neither {\cf 5} nor another value supported by
the implementation.

The dedication now reads Dedicated to the Memory of Robert Hieb'.

Added missing )' in two examples from the definition of eqv?'.
They now are:
(letrec ((f (lambda () (if (eqv? f g) 'both 'f)))
(g (lambda () (if (eqv? f g) 'both 'g))))
(eqv? f g))
\ev  \unspecified

(letrec ((f (lambda () (if (eqv? f g) 'f 'both)))
(g (lambda () (if (eqv? f g) 'g 'both))))
(eqv? f g))
\ev  \schfalse%

Added be' to the penultimate item in the Notes' section.  The item

The calls that are required to be implemented in a properly tail-recursive
fashion are defined explicitly.

Added the following at the end of the initial paragraph in section 7.3,
Derived expression types':

See section~\ref{proceduresection} for a possible definition of {\cf delay}.

Page 7, Section 3.5, first paragraph of rationale:
"the same semantics as the continuation to the procedure"
is now
"the same semantics as the continuation passed to the procedure".

Page 8, the note at end of Section 3.5 is now typeset in the
same fashion as the rest of the notes.

Page 8, The parenthetical explanation at the end of the note at end
of Section 3.5 is now a separate sentence:

In the example above, the {\cf let} expression could be compiled
as a tail call to {\cf h}. (The possibility of {\cf h} returning
an unexpected number of values can be ignored, because in that
case the effect of the {\cf let} is explicitly unspecified and
implementation-dependent.)

Added a period after the title in the reference for Dybvig et al's Syntactic
Abstraction in Scheme'.

Added citations and references for the following, which were mentioned
in the text without citations:

Peter Naur et al.
Revised report on the algorithmic language Algol 60.
{\em Communications of the ACM} 6(1):1--17, January 1963.

Jonathan A. Rees, Norman I. Adams IV, and James R. Meehan.
The T manual, fourth edition.
Yale University Computer Science Department, January 1984.

Texas Instruments, Inc.
TI Scheme Language Reference Manual.
Preliminary version 1.0, November 1985.

----------------------------------------------------------------
The following were listed earlier.
----------------------------------------------------------------

Added numbers to the subsections in the section on macros.

Corrected the spelling of Bruggeman in the references.

Removed a spurious )' from the end of the first bullet item on
page 14.

Corrected the indenting of some of the code in the macro definitions
in section 7.3.

Changed the definition of OR in section 7.3 to:
(define-syntax \ide{or}
(syntax-rules ()
((or) \sharpfoo{f})
((or test) test)
((or test1 test2 ...)
(let ((x test1))
(if x x (or test2 ...))))))

Replaced (<test> <expression> ...)' with (<test> <expression_1> ...)'
in the specification of COND.
Old:
((cond (test) clause1 clause2 ...)
(or test (cond clause1 clause2 ...)))
New:
((cond (test) clause1 clause2 ...)
(let ((temp test))
(if temp
temp
(cond clause1 clause2 ...))))

Replaced
Its value must be a procedure that accepts one argument;  this
procedure is then called on the value of the <test> and the values
returned by this procedure are returned by the cond expression.
with
Its value must be a procedure that accepts one argument;  this
procedure is then called on the value of the <test> and the value(s)
returned by this procedure is(are) returned by the cond expression.
in the specification of cond.

Removed the use of or' in the definition of COND in section 7.3.

Changed
This section describes operations on Scheme's non-numeric ...
to
This section describes operations on some of Scheme's non-numeric ...
at the beginning of section 6.3.

Changed (<keyword> <datum>*)' to (<keyword> <datum> ...)' at the
beginning of section 4.3.

`