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

More words on the scoping of declarations

    Actually I wasn't primarily worried about the meaning of repeated
LET* variables, supposing they are legal.  I was more concerned about
the scope in LET* of declarations which don't pertain to a particular
variable.   In LET* there isn't a clear environment division which can
contain these "pervasive" declarations.

I can think of two reasonable scopes for pervasive declarations in LET*: 
 1] The declarations syntactically enclose all of the incremental
    environments in the LET*, and thus affect all init forms as well as
    the body.
 2] The declarations affect only the innermost environment, and thus
    are in effect only in the body, and in none of the init forms.

I favor the latter interpretation, since it more closely resembles the
scoping in LET.  In any case, it seems that LET* must special-case the
declarations depending on whether they are "pervasive" or not.
Although the concept of a pervasive declaration seems to cause Pavel
to cringe, I am not yet convinced that it is a bankrupt idea.