anchor.diff:           ;; add to prologue, so compute main loop first.
            (main (or (parallel-form loop)
                      (straightforward-form loop)))
  -         (full `(progn
  +         (full `(block ,(name loop)
                     (with-prologue (,(prologue loop))
                       ,@(initially loop)
                       ,main
  
positive.code:         ((:sum :collect :append :count :minimize :maximize)
           (accumulate term (eat state) (eat state :if :into) state))
          (:do (eat state :progn))
          (otherwise (err "a PS-LOOP keyword" term))))
  
  (defun clause (state)
    (let ((term (eat state :atom)))
      (loop-case term
            (:with (a-with-clause state))
            (:for (for-clause state))
            (:repeat (repeat-clause state))
  
negative.code: 
  (eval-when (:compile-toplevel :load-toplevel :execute)
    (defvar *loop-keywords*
      '(:named :for :repeat :with :while :until :initially :finally
        :from :to :below :downto :above :by :in :across :on := :then
        :when :unless :if :else :end :do :return
        :sum :collect :append :count :minimize :maximize :into))
  
    (defun as-keyword (key)
  