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.