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: Throws an error if one of the items in the list is not a list (cons or
  nil). If an entry is NIL, then both key and value will be NIL (or
  should this throw an error?).
  Establishes a block named NIL.
  The body of the loop is an implicit TAGBODY."
    (with-unique-names (assoc)
      `(dolist (,assoc ,alist ,result)
        (let ((,key (car ,assoc))
  	    (,value (cdr ,assoc)))
  	(tagbody ,@body)))))
  
  (defmacro doalist* ((key value alist &optional result) &body body)
    "Just like DOALIST except the value is in the second element of each
  