anchor.diff:    (if (or (atom x)
   		  (%setq? x)
   		  (vm-jump? x)
  -		  (%var? x))
  +		  (%var? x)
  +		  (named-function-expr? x))
   	  x
   	  (expex-guest-filter-setter ex `(%setq ~%ret ,(if (identity? x)
   													   (second x)
  
positive.code: ;; Check if an expression has a return value.
  (defun expex-returnable? (ex x)
    (not (or (vm-jump? x)
  		   (%var? x))))
  
  ;; Check if arguments to a function should be expanded.
  (defun expex-expandable-args? (ex fun argdef)
  
negative.code: ;; Recurses into LAMBDA-expressions and VM-SCOPEs.
  ;; Removes VM-SCOPEs.
  (defun expex-expr (ex expr)
    (let x (if (named-function-expr? expr)
  		     expr
  			 (expex-guest-filter-expr ex expr))
      (if
  	  (%var? x)
  	    (expex-var x)
  	  (or (lambda? x)
  		  (named-function-expr? x))
  	    (expex-lambda ex x)
        (not (expex-able? ex x))
  	    (values nil (list x))
        (vm-scope? x)
  	    (values nil (expex-body ex (vm-scope-body x)))
        (%setq? x)
  