(let ((*evalhook* 'f))
(eval expression))
then instead of evaluating expression the function f is called with two arguments: the construct (eval expression) and the lexical environment in which free names of expression can be meaningfully interpreted. According to Common Lisp the Language [13], the eval hook and apply hook mechanisms of Common Lisp are primarily designed for the implementation of Lisp development tools, such as steppers, tracers, and debuggers, within Common Lisp itself. The mechanism makes it possible to get control at critical places during evaluation of an expression, in order to report on, or otherwise utilize the available information about the state of the computation.