anchor.diff:        (funcall (expander-post e)))))
   
   (defun expander-has-macro? (expander-name macro-name)
  -  (cdr (assoc macro-name (expander-macros (expander-get expander-name))
  -			  :test #'eq)))
  +  (href (expander-macros (expander-get expander-name)) macro-name))
   
   (defun expander-macro-names (expander-name)
  -  (carlist (expander-macros (expander-get expander-name))))
  +  (hashkeys (expander-macros (expander-get expander-name))))
  
positive.code:     (acons! expander-name e *expanders*)
      (unless pred
        (setf (expander-pred e)
  			(fn (and (atom _.)
  				 	 (symbol-name _.)
  				 	 (cdr (assoc _. (expander-macros *current-expander*) :test #'eq))))))
      (unless call
        (setf (expander-call e)
  			(fn (when *expander-print*
                    (print _))
                  (apply (cdr (assoc _. (expander-macros *current-expander*) :test #'eq)) ._))))
      (setf (expander-lookup e)
            #'((expander name)
  			  (cdr (assoc name (expander-macros expander) :test #'eq))))
  	e))
  
  (defun set-expander-macro (expander-name name fun)
    (when (expander-has-macro? expander-name name)
      (warn "Macro ~A already defined." name))
    (setf (expander-macros (expander-get expander-name))
  		(aremove name (expander-macros (expander-get expander-name))))
    (acons! name fun (expander-macros (expander-get expander-name))))
  
  (defun set-expander-macros (expander-name lst)
    (map (fn set-expander-macro expander-name _. ._) lst))
  
negative.code:     `(progn
  	   (when (expander-has-macro? ',expander-name ',name)
  	     (warn "Macro ~A already defined." ',name))
  	   (defun ,g ,@x)
         (setf (href (expander-macros (expander-get ',expander-name)) ',name) #',g))))
  
  (defun expander-expand (expander-name expr)
    (let e (expander-get expander-name)
  