anchor.diff:                    name type environment)
              (values default-value nil))))
   
  -(defun (setf lookup) (value environment type name &key (error-p 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)
  
positive.code: (defun unwalk-forms (forms)
    (mapcar #'unwalk-form forms))
  
  (defun register (environment type name datum &rest other-datum)
    (cons (if other-datum
              (list* type name datum other-datum)
              (list* type name datum))
          environment))
  
  (defmacro extend (environment type name datum &rest other-datum)
    `(setf ,environment (register ,environment ,type ,name ,datum ,@other-datum)))
  
  (defun lookup (environment type name &key (error-p nil) (default-value nil))
    (loop
       :for (.type .name . data) :in environment
       :when (and (eql .type type) (eql .name name))
  
negative.code:          (error "Sorry, No value for ~S of type ~S in environment ~S found."
                  name type environment))))
  
  ;;;
  ;;; Handler management
  ;;;
  
  (defparameter *walker-handlers* (make-hash-table :test 'eq))
  
  