anchor.diff:  (defun expex-expr (x)
     (with-default-listprop x
       (pcase x
  +      %=?            (expex-expr-%= x)
         %%go-nil?      (expex-%%go-nil x)
   	  %var?          (expex-var x)
   	  named-lambda?  (expex-lambda x)
         %%block?       (values nil (expex-body (%%block-body x)))
  -      %=?            (expex-expr-%= x)
         unexpex-able?  (values nil (list x))
         (expex-expr-std x))))
  +
   
   ;;;; BODY EXPANSION
   
  
positive.code:                                                    val)))))
  
  (defun expex-add-var ()
    (aprog1 (expex-sym)
      (funinfo-var-add *funinfo* !)))
  
  
  ;;;; PREDICATES
  
negative.code:   (with ((moved new-expr) (expex-filter-and-move-args (list ..x.)))
      (values moved `((%%go-nil ,.x. ,@new-expr)))))
  
  (defun expex-expr-%= (x)
    (with-%= place val x
      (? (%=? val)
         (return (values nil (expex-body `(,val
                                           (%= ,place ,(%=-place val)))))))
      (expex-import-variable place)
      (with ((moved new-expr) (expex-move-args (list val)))
        (values moved (expex-make-%= place new-expr.)))))
  
  (defun expex-expr-std (x)
    (expex-import-function x)
  