Copyright (C) 2000-2012 |
GNU Info (guile.info)About EnvironmentsNames, 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. automatically generated by info2www version 1.2.2.9 |