 |
 |
An environment in Common Lisp is a Lisp object that contains, in some fashion, a set of bindings and also information about operators, variables, symbols, and so on. This information can be useful in various ways, particularly during evaluation, compilation and macro expansion. The macroexpand operator takes an optional environment argument, whose value is either nil or an environment object.
The actual nature of an environment object is implementation dependent. In standard Common Lisp, there is no way for programmers to access or modify environment objects. In the proposed Common Lisp standard specified by Guy Steele et. al. in the second edition of Common Lisp: the Language, an interface to environment objects was proposed (in Section 8.5, pp 207-214), but the ANSI J13 committee decided not to include this in the ANS. Allegro CL now has implemented much of the CLtL-2 environments proposal, with some differences, and that implementation has now been made Open Source as this Environments Access module, so that other implementations can make use of the implementation as well, and so that Environments can potentially be accessed portably.
For documentation, we recommend that users read the section of CLtL-2 described above, although this document is complete in itself. Also available is a Powerpoint presentation with notes included, about this module.
Note that due to some last minute changes after Allegro CL 7.0 was released, the Environments Access module is not compatible with 7.0, and can't be loaded into Allegro CL. However, the module is already loaded into Allegro CL 7.0, and the changes are noted in the Powerpoint presentation, so users of Allegro CL can just start using it.
|  |
 |