anchor.diff:    name)
   
   (defun macro-function (symbol &optional env)
  -  (when env
  -    (error "TODO: Macro-function in environment."))
  -  (get symbol '%macro-function))
  +  (dolist (e env
  +           (get symbol '%macro-function))
  +    (when (eql (first e) :macros)
  +      (let ((fn (assoc symbol (rest e))))
  +        (when fn (return (cdr fn)))))))
   
   (defun (setf macro-function) (value symbol &optional env)
     (when env
  
positive.code:           ((:constant) +symbol-mode-constant+)
            ((:symbol-macro) +symbol-mode-symbol-macro+)))
    value)
  
  ;;; The compiler can only handle (apply function arg-list).
  (defun apply (function arg &rest more-args)
  
negative.code:                                    (declare (ignore r))
                                     (error 'undefined-function :name symbol))
          (get symbol '%macro-function) value))
  
  (defun symbol-macro-function (symbol)
    nil)
  
  ;;; Calls to these functions are generated by the compiler to
  ;;; signal errors.
  