Top-level Command |  | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 9.0 Unrevised from 8.2 to 9.0. 8.2 version

## :evalmode

Arguments: &key context

If called with context specified true, evaluation is done, as best as possible (see warning just below) with respect to the current frame rather than the top level. All known local variables (those printed by the :local command) can be referenced by name in ordinary Lisp forms, if their names were saved during the compilation of the function associated with the frame. See `save-local-names-switch` and `save-local-scopes-switch` for information on when the compiler saves local names.

Setting those variables sets the value in the frame. All specials will also evaluate to their value in the context of the current frame. If context is specified `nil`, evaluation is done with respect to the top level, not the current frame.

Warning: The context evaluation mode (i.e. when running in `:evalmode :context t`) is intended only as a debugging aid, and is not supported for normal extended operation of the lisp system. Its purpose is to emulate a dynamic-binding style debugging interface to make interactions with variables within compiled-functions easier. The emulation is not and can never be perfect, due to the information loss that occurs during compilation in a lexically-scoped lisp like Common Lisp. Therefore, extreme care must be used when running in context mode, and the normal operating environment must be a no-context evaluation mode.

In particular, whenever the current read-eval-print-loop changes, there is a possibility that the context sensitivity will be inconsistent, due to the binding and unbinding of special variables. Context evaluation simulates the binding environment of the desired context frame, not by unbinding the bindstack to the required point, but by binding again those specials to their previously bound values. This simulates the desired context adequately for most simple evaluations, but because the bindstack actually grows instead of shrinking, some binding-orders are lost and the top-level might become confused. Thus, context evaluation may or may not continue after pops or resets.

See top-level.htm for more information on top-level commands. See debugging.htm for information on the debugger.

Copyright (c) 1998-2019, Franz Inc. Oakland, CA., USA. All rights reserved.
This page was not revised from the 8.2 page.
Created 2012.5.30.

|  | ToC | DocOverview | CGDoc | RelNotes | FAQ | Index | PermutedIndex
| Allegro CL version 9.0 Unrevised from 8.2 to 9.0. 8.2 version