MTS 8: LISP and SLIP in MTS
June 1976
+ ***16 UNDEFINED ATOM
+ Q
+
* 1 : CAR BROKEN
USE XX
changes Q to XX in the form (CAR Q), which caused the
error.
# This aborts the break. This is a useful way to unwind
to a higher-level break. All other errors, including
those encountered while executing the GO, OK, EVAL and
RETURN commands, maintain the break.
## This returns control directly to the top level of
LISP.
ARGS This prints the names and the current values of the
arguments of the function at BREAKPOINTER. In most
cases, these are the arguments of the broken function.
FORM This is EVALed if not a break command.
Context Commands ________________
All information pertaining to the evaluation of forms in LISP is kept
on the push-down stack. Whenever a form is evaluated, the form is
placed on the push-down stack. Whenever a variable is bound, the old
binding is saved on the push-down stack. The context (the bindings of
free variables) of a function is determined by its position in the
stack. When a break occurs, it is often useful to explore the contexts
of other functions on the stack. BREAKFUNCTION allows this by means of
BREAKPOINTER, which is a context pointer into the push-down stack.
BREAKFUNCTION commands move the context pointer and evaluate atoms or
expressions relative to their positions in the stack. For the purpose
of this document, when moving through the stack, "backward" is consid-
ered to be toward the top level or, equivalently, towards the older
function calls on the stack.
F arg1 arg2 ... argN
This command resets the variable BREAKPOINTER, which
establishes a context for the commands USE, ARGS, AT,
FROM and the backtrace commands described below.
BREAKPOINTER is the position of a function call on the
push-down list. It is initialized to the function
just before the call to BREAKFUNCTION.
F takes the rest of the input line as its list of
arguments. Each argument may be either a function
104 LISP Debugging Facilities