2.11.3.1 Syntax Terminology
This section defines the concepts and data types used by the syntactic
closures facility.
-
Forms are the syntactic entities out of which programs are
recursively constructed. A form is any expression, any definition, any
syntactic keyword, or any syntactic closure. The variable name that
appears in a
set!
special form is also a form. Examples of
forms:
17
#t
car
(+ x 4)
(lambda (x) x)
(define pi 3.14159)
if
define
-
An alias is an alternate name for a given symbol. It can appear
anywhere in a form that the symbol could be used, and when quoted it is
replaced by the symbol; however, it does not satisfy the predicate
symbol?
. Macro transformers rarely distinguish symbols from
aliases, referring to both as identifiers. Another name for an
alias is synthetic identifier; this document uses both names.
-
A syntactic environment maps identifiers to their meanings. More
precisely, it determines whether an identifier is a syntactic keyword
or a variable. If it is a keyword, the meaning is an interpretation
for the form in which that keyword appears. If it is a variable, the
meaning identifies which binding of that variable is referenced. In
short, syntactic environments contain all of the contextual information
necessary for interpreting the meaning of a particular form.
-
A syntactic closure consists of a form, a syntactic environment,
and a list of identifiers. All identifiers in the form take their
meaning from the syntactic environment, except those in the given list.
The identifiers in the list are to have their meanings determined
later.
A syntactic closure may be used in any context in which its form could
have been used. Since a syntactic closure is also a form, it may not
be used in contexts where a form would be illegal. For example, a form
may not appear as a clause in the cond
special form.
A syntactic closure appearing in a quoted structure is replaced by its
form.