anchor.diff:  
   (declaim (optimize debug))
   
  -(defclass env ()
  -  ((parents :accessor env-parents :initarg :parents)
  -   (bindings :accessor env-bindings :initarg :bindings :initform (make-hash-table :test 'eq))))
  -
  -(defgeneric lookup (symbol env))
  -(defgeneric (setf lookup) (new-value symbol env))
  -(defgeneric extend (symbol env &optional value))
  -
  -(defun make-env (&rest parents)
  -  (make-instance 'env :parents parents))
  +(defstruct (env (:constructor make-env (&rest parents)))
  +  parents
  +  (bindings (make-hash-table :test 'eq)))
   
   (defmethod print-object ((o env) s)
     (print-unreadable-object (o s :type t :identity t)
  
positive.code: 
  (defun get-current-env () *denv*)
  
  (defmethod lookup (symbol (env env))
    (when (eq symbol *ignore*)
      (error "Attempted to lookup #ignore in ~A" env))
    (if env
  
negative.code:                  (error "No binding for ~A in or above ~A" symbol env))))
        (error "No binding for ~A in or above ~A" symbol env)))
  
  (defun (setf lookup) (new-value symbol &optional (env *global-env*))
    (when (eq symbol *ignore*)
      (error "Attempted to set #ignore in ~A" env))
    (if env
  