EVALHOOK This package is adapted from the implementation by Dave Dyer (DDyer@ISIB). "EVALHOOK", an extension to the standard Interlisp to make it easy to step or trace the interpreter. The specs for EVALHOOK are stolen from MACLISP. EVALHOOK is a global variable, which if not NIL, is a function object to be APPLY'd to an object in place of EVAL. (EVALHOOK obj function) is a function that sets the variable EVALHOOK to function, and evals obj without noticing the new value of EVALHOOK. How it works: If EVALHOOK is not nil, it is set to NIL and function indicated by EVALHOOK is apply'd to the object being eval'd. The tracer called this way will normally call (EVALHOOK obj 'myself) at some point, which will do the actual evaluation and continue tracing lower levels of the form. Example: (DEFINEQ (HOOK (OBJ) (EVALHOOK (PRINT OBJ) 'HOOK)) (HOOK anything) will evaluate "anything" printing each sub-form before it is evaluated.