anchor.diff:     :decls nil))
   
   (deftype expr () t)
  +(deftype body () 'list)
   
   (adt:defdata binding
     (var symbol expr)
     (symbol-macro symbol expr)
  -  (fun symbol expr)
  +  (fun symbol body)
     ;; But of course we can't get the function.
     (macro symbol function))
   
  
positive.code: (defun augment/funs (funs &optional (subenv *subenv*))
    (make 'subenv
          :vars (.vars subenv)
          :funs (append (mapcar (op (apply #'fun _)) funs)
                        (.funs subenv))))
  
  ;;; Of course this isn't used at the moment.
  
negative.code:           ((progn &body body)
             (if (single body)
                 (expand-partially self (first body))
                 (if *subenv*
                     `(progn ,@(mapcar (op (expand-partially self _)) body))
                     (invoke-restart 'splice body))))
            (((prog1 multiple-value-prog1) f &body body)
  