DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(guile.info.gz) About Environments

Info Catalog (guile.info.gz) About Closure (guile.info.gz) Local Variables
 
 14.4.1 Names, Locations, Values and Environments
 ------------------------------------------------
 
 We said earlier that a variable name in a Scheme program is associated
 with a location in which any kind of Scheme value may be stored.
 (Incidentally, the term "vcell" is often used in Lisp and Scheme
 circles as an alternative to "location".)  Thus part of what we mean
 when we talk about "creating a variable" is in fact establishing an
 association between a name, or identifier, that is used by the Scheme
 program code, and the variable location to which that name refers.
 Although the value that is stored in that location may change, the
 location to which a given name refers is always the same.
 
    We can illustrate this by breaking down the operation of the
 `define' syntax into three parts: `define'
 
    * creates a new location
 
    * establishes an association between that location and the name
      specified as the first argument of the `define' expression
 
    * stores in that location the value obtained by evaluating the second
      argument of the `define' expression.
 
    A collection of associations between names and locations is called an
 "environment".  When you create a top level variable in a program using
 `define', the name-location association for that variable is added to
 the "top level" environment.  The "top level" environment also includes
 name-location associations for all the procedures that are supplied by
 standard Scheme.
 
    It is also possible to create environments other than the top level
 one, and to create variable bindings, or name-location associations, in
 those environments.  This ability is a key ingredient in the concept of
 closure; the next subsection shows how it is done.
 
Info Catalog (guile.info.gz) About Closure (guile.info.gz) Local Variables
automatically generated byinfo2html