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: (defparameter +atom-marker+ '+atom-marker+)
  
  (defun find-walker-handler (form)
    "Simple function which tells us what handler should deal with FORM. Signals an error if we don't have a handler for FORM."
    (if (atom form)
        (gethash '+atom-marker+ *walker-handlers*)
        (aif (gethash (car form) *walker-handlers*)
  