anchor.diff:    "Define a function with BODY written in Lisp-1 style.
   
   This is just like DEFUN."
  -  (with-vars-bound (extract-argument-names args :allow-specializers nil)
  +  (with-bound-vars (extract-argument-names args :allow-specializers nil)
       `(defun ,name ,args
          ,(lisp1 `(block ,name ,@body)))))
   
  
positive.code: (deflisp1-walker function-binding-form (binds body)
    ;; Add all the bindings to the function namespace to be sharp
    ;; quoted.
    (with-funs-bound (mapcar #'car binds)
      (new (class-name-of form)
  	 :binds (lisp1b binds)
  	 :body  (lisp1s body))))
  
negative.code: 
  ;;;; * Special Variables
  
  (defvar *bound-vars* nil
    "When walking code, this variable contains a list of
  variables (represented by symbols) which have been bound in
  the variable namespace.
  
  In essence these variables do not have to be sharp-quoted.")
  
  (defvar *bound-funs* nil
    "When walking code, this variable contains a list of
  variables (represented by symbols) which have been bound in
  the function namespace.
  
  In essence these variables must be sharp-quoted.")
  
  (defmacro with-bound-vars (vars &body body)
    "Execute BODY with VARS added to the variable namespace and
  VARS removed from the function namespace.
  
  This should only be used when code-walking."
    `(let ((*bound-vars* (append         *bound-vars* ,vars))
  	 (*bound-funs* (set-difference *bound-funs* ,vars)))
       ,@body))
  
  (defmacro with-bound-funs (funs &body body)
    "Execute BODY with FUNS added to the function namespace and
  FUNS removed from the variable namespace.
  
  This should only be used when code-walking."  
    `(let ((*bound-funs* (append         *bound-funs* ,funs))
  	 (*bound-vars* (set-difference *bound-vars* ,funs)))
       ,@body))
  
  ;;;; * Definers
  