anchor.diff:  ;;;; FORM objects.
   
   (defvar *walker-handlers* (make-hash-table :test 'eq))
  +
  +(define-condition undefined-reference (warning)
  +  ((enclosing-code :accessor enclosing-code :initform nil)
  +   (name :accessor name :initarg :name)))
  +
  +(define-condition undefined-variable-reference (undefined-reference)
  +  ()
  +  (:report
  +   (lambda (c s)
  +     (if (enclosing-code c)
  +         (format s "Reference to unknown variable ~S in ~S." (name c) (enclosing-code c))
  +         (format s "Reference to unknown variable ~S." (name c) (enclosing-code c))))))
  +
  +(define-condition undefined-function-reference (undefined-reference)
  +  ()
  +  (:report
  +   (lambda (c s)
  +     (if (enclosing-code c)
  +         (format s "Reference to unknown function ~S in ~S." (name c) (enclosing-code c))
  +         (format s "Reference to unknown function ~S." (name c) (enclosing-code c))))))
   
   (defvar +atom-marker+ '+atom-marker+)
   
  
positive.code: ;;;; * A Code Walker
  
  ;;;; ** Public Entry Point
  
  (defun walk-form (form &optional (parent nil) (env (make-walk-env)))
    "Walk FORM and return a FORM object."
  
negative.code:     (values environment declares)))
  
  (defun walk-implict-progn (parent forms env &key docstring declare)
    (handler-bind ((undefined-reference (lambda (condition)
                                          (unless (enclosing-code condition)
                                            (setf (enclosing-code condition) `(progn ,@forms))))))
      (multiple-value-bind (body env docstring declarations)
          (split-body forms env :parent parent :docstring docstring :declare declare)
        (values (mapcar (lambda (form)
                          (walk-form form parent env))
                        body)
                docstring
                declarations))))
  
  ;;;; Atoms
  
  