anchor.diff:                                  `(progn (setf ,var ,expr) ',var)))))
                          ((defconstant name expr &optional docstring)
                           (declare (ignore docstring))
  -                        (let ((expr (expand expr env)))
  -                          (if (constantp expr)
  -                              (push (list name expr) symbol-macros)
  +                        (let ((expanded (expand expr env)))
  +                          (if (and (not (in-env?)) (constantp expanded))
  +                              (expand-partially
  +                               `(define-symbol-macro ,name ,expr))
                                 (push (list name `(load-time-value ,expr t)) hoisted-vars)))
                           `',name)
                          ((defconst name expr &optional docstring)
                           (expand-partially `(defconstant ,name ,expr ,docstring)))
                          ((defun name args &body body)
  -                        (if (or in-let? symbol-macros macros)
  +                        (if (in-env?)
                               (expand-partially
                                `(defalias ,name
                                   (named-lambda ,name ,args
  
positive.code:                         ;; Remember `def' returns a symbol.
                          (let ((expr (expand expr env)))
                            (if (and
                                 (constantp expr env)
                                 ;;Don't hoist if null.
                                 (not (null expr))
                                 ;; Don't hoist unless this is the first
  
negative.code:                             `((,macro? (,def) ,@(expand-top (rest forms)))))
                             ((nil)
                              (cons exp (expand-top (rest forms)))))))))
                 (expand-1 (form env)
                   "Like macroexpand-1 with local macro and symbol macro definitions."
                   (match form
  