[r6rs-discuss] [Formal] eliminate library export immutability loophole

AndrevanTonder andre at het.brown.edu
Mon Mar 19 10:08:29 EDT 2007


By the way, I believe some of the wording in section 6.1 is confusing:

   All explicitly exported variables are immutable in both the exporting and
   importing libraries. It is thus a syntax violation if an explicitly exported
   variable appears on the left-hand side of a set! expression, either in the
   exporting or importing libraries. All other variables defined within a
   library are mutable.

This last sentence is incorrect (in fact it is contradicted right away in the 
paragraph that follows this one).

Also, at another point the document states

   The transformer expressions and transformer bindings are created from left to
   right, as described in chapter 8. The variable-definition right-hand-side
   expressions are evaluated from left to right, as if in an implicit letrec*,
   and the body expressions are also evaluated from left to right after the
   variable-definition right-hand-side expressions. A fresh location is created
   for each exported variable and initialized to the value of its local
   counterpart.

Someone who reads this might rightfully ask how the set of exported 
variables is determined.  Although I think the last sentence is logically 
correct, since it can be satisfied in a simple implementation by simply
potentially doing too much, e.g., creating an export location for all 
non-mutated variables, the statement might trip up some readers.

Andre



More information about the r6rs-discuss mailing list