anchor.diff:    "TEST is evaluated. If the result is true, then BODY is executed as
   an implicit PROGN, else the loop terminates. This cycle repeats as
   long as TEST evaluates to true.
  -Establishes a block named NIL."
  -  `(loop while ,test do (progn ,@body)))
  +Establishes a block named NIL.
  +The body of the loop is an implicit TAGBODY."
  +  `(prog ()
  +    loop-start
  +      (if (not ,test)
  +	  (return))
  +      (tagbody ,@body)
  +      (go loop-start)))
  
positive.code: This saves you from having to name the variable and makes explicit the
  fact you won't need its value. Of marginal value, but offers a nice
  alternative to (loop repeat count do body finally result).
  Establishes a block named NIL."
    (with-unique-names (ignored-var)
      `(dotimes (,ignored-var ,count ,@(if result (list result)))
         ,@body)))
  
negative.code:     `(dolist (,assoc ,alist ,result)
         (let ((,key (first ,assoc))
  	     (,value (second ,assoc)))
  	 (tagbody ,@body)))))
  
  (defmacro doplist ((key value plist &optional result) &body body)
    "Analogous to DOLIST, but for plists.
  Establishes a block named NIL.
  The body of the loop is an implicit TAGBODY."
    `(loop for (,key ,value) on ,plist by #'cddr
  	 do (progn ,@body)
  	 finally (return ,result)))
  