This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.
2.1.4 Notations for environments It says "Also, note that there are no operations to remove entries from environments. This is never necessary as updating an environment effectively creates a new extended copy of the original environment, leaving the original environment accessible wherever it is in scope along with the updated copy." So which copy is used in case of a conflict? Example: an outer scope has a variable named $v and an inner scope creates a new variable named $v with a different value. So which value is accessed? I think the truth is that creation of a new environment completely occludes the old environment, so it is not true to say that both the old and the new environment are accessible. I think the behavior is actually a stack, and only the top environment on a stack is used. When the scope that created the top environment exits, then that environment is popped from the stack, bringing the outer environment back into visibility. I think that expressing the behavior in this fashion would be both more correct and more understandable.
I believe this is editorial. - Jerome
The paragraph immediately following the one below already addresses this point: <p>Updating an environment creates a copy of the original environment and overrides any previous binding that might exist for the same name and the same component in that environment. Updating the environment is used to capture the <emph>scope</emph> of a symbol (e.g., for variables, namespace prefixes, etc). For instance, in the following expression</p>