Node:Block structure, Next:Exporting declarations, Previous:Visibility, Up:Declarations
A declaration (i.e. a form like :identifier) is owned
with smallest block containing it. The declaration is
visible ("in scope") inside the entire block (unless it
is overridden by another declararation inside a smaller block).
Blocks are: (incomplete list - may change slightly):
;expr.)
if statement).
(The details have not been formalized yet.)
Example: The expression [:x x] will match a
two-element sequence if and only if the two elements match.
Thus [:x x]=[3 3] succeeds, but [:x x]=[3 4] fails.
These expressions also declare x in the current (surrounding)
scope, because [:x x] is not a block.
This may be undesirable; we would like to limit the scope
of the x. Just ([:x x]) will not prevent
the unwanted declaration, but (;[:x x]) will do it.