anchor.diff:    (evaluate-term sy))
   
   (defun cmd-prefix-parts (prefix)
  +  "Given a cmd-prefix, separate it into the 2 things it
  +describes (variable assignments and io redirects)."
     (with-slots (io-redirect assignment-word cmd-prefix-tail) prefix
       (multiple-value-bind (assignments redirects)
           (when cmd-prefix-tail
  
positive.code:       (setf (env (simple-word-text name)) expanded))))
  
  (defun evaluate-command-free (assignments redirects)
    (dolist (assign assignments)
      (evaluate-assignment-word assign))
    (with-fd-scope ()
  
negative.code:   (truthy-exit-status))
  
  (defun evaluate-synchronous-job (sy)
    "Evaluate the given syntax tree synchronously.
  
  This is a synonym for `evaluate'."
    (evaluate sy))
  
  (defparameter *special-variables-to-preserve-during-async*
    '(*environment*)
    "The values of these variables will be preserved when switching
  threads to evaluate a syntax tree asynchronously (both for
  `evaluate-async-job' and `evaluate-background-job').")
  
  (defun evaluate-async-job (sy completion-handler)
    "Evaluate the given syntax tree asynchronously.
  
  This function does not create an entry in the job table."
    (let* ((symbols *special-variables-to-preserve-during-async*)
           (symbol-values (mapcar #'symbol-value symbols))
           (fd-bindings *fd-bindings*)
  