[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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
now reads:

  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.

Added
   Wherever an internal definition may occur (begin <definition_1> ...)
   is equivalent to the sequence of definitions that form the body of
   the begin.
to the end of the section on internal defines.  I had accidentally
removed this.

Added (begin <definition>*) back as a production for <definition> in
the formal syntax.