anchor.diff:                (error "Sorry, no walker for the special operator ~S defined." (car form)))
                (t (gethash 'application *walker-handlers*))))))
   
  -(defmacro defwalker-handler (name (form parent lexical-env)
  +(defmacro defwalker-handler (name (form parent lexenv)
                                &body body)
     `(progn
        (setf (gethash ',name *walker-handlers*)
  -           (lambda (,form ,parent ,lexical-env)
  -             (declare (ignorable ,parent ,lexical-env))
  +           (lambda (,form ,parent ,lexenv)
  +             (declare (ignorable ,parent ,lexenv))
                ,@body))
        ',name))
   
  
positive.code:        :return (values data t)
       :finally
         (if error-p
             (error "Sorry, No value for ~S of type ~S in environment ~S found."
                    name type environment)
             (values default-value nil))))
  
  #+(or)
  (defun (setf %lookup) (value environment type name &key (error-p nil))
    (loop
       for env-piece in environment
       when (and (eql (first env-piece)  type)
                 (eql (second env-piece) name))
         do (setf (cddr env-piece) value) and
         return value
       finally
         (when error-p
           (error "Sorry, No value for ~S of type ~S in environment ~S found."
                  name type environment))))
  
  ;;;
  
negative.code:   (unwalk-form (walk-form form nil (make-walkenv env))))
  
  (defvar *warn-undefined* nil
    "When non-NIL, any references to undefined functions or variables will signal a warning.")
  
  (defun walk-form (form &optional (parent nil) (env (make-walkenv)))
    "Walk FORM and return a CLOS based AST that represents it."
  