Until now, the Scheme reports have encouraged but not required the empty list () and the boolean false value #f to be distinct. It has been the intent ever since the Revised Revised Report, however, that this distinction would eventually be required. The IEEE Scheme standard bit the bullet in 1990, and now the Revised report follows.
The standard also dropped the distinction between essential and not-essential language features; most features that were formerly not essential, such as n-ary and apply, are now required. The Revised Report will adopt this stance, at least as regards language features that are shared with the IEEE standard. Non-essential non-IEEE oddities such as transcript-on and transcript-off and the proposed interaction- environment (see below) were not discussed at the meeting, however, and consensus on their status will have to be reached via electronic mail.
A third aspect of the standard that was adopted was a certain obscure paragraph regarding assignments to top-level variables (section 6, paragraph 2). The effect of this is that if a program contains an assignment to any top-level variable, then the program must contain a define for that variable; it is not sufficient that the variable be bound. This has been the case for most variables, but the rule applies as well to variables such as car that have built-in bindings. In addition, it is clarified that if a program makes such a definition or assignment, then the behavior of built-in procedures will not be affected. For example, redefining length cannot affect the behavior of the built-in list->vector procedure. If in some particular implementation list->vector is written in Scheme and calls length, then it must be sure to call the built-in length procedure, not whatever happens to be the value of the variable length.