In isolation, a textual identifier (name) such us as foo
isn't even
a variable.
The static scoping structure of a program gives names a certain aspect of meaning, and the dynamic execution of the program gives them more meaning.
In isolation, foo
doesn't mean anything. Used in a program,
it can be the name of a variable. At different places in
a program, it can be the name of different variables, e.g.,
a toplevel variable, or a local variable in one or more procedures.
In Scheme an identifier such as foo
may not represent a variable
at all. In the quote
expressions 'foo
and '(baz foo bar)
it identifies a symbol object, but in an entirely different sense
than variable binding. It doesn't name a variable foo
, or a
variable whose binding holds a pointer to foo
---it is a literal
representation of a pointer to the unique symbol object whose printed
representation is foo
.