anchor.diff:  (defmacro while* (test &body body)
     "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."
  +long as TEST evaluates to true.
  +Establishes a block named NIL."
     `(loop while ,test do (progn ,@body)))
  
positive.code:   "Analogous to DOLIST, but for alists.
  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?)."
    (with-unique-names (assoc)
      `(dolist (,assoc ,alist ,result)
        (let ((,key (car ,assoc))
  
negative.code: 	 ,@body))))
  
  (defmacro doplist ((key value plist &optional result) &body body)
    "Analogous to DOLIST, but for plists.
  Establishes a block named NIL."
    `(loop for (,key ,value) on ,plist by #'cddr
  	 do (progn ,@body)
  	 finally (return ,result)))
  
  (defmacro dovector ((var vector &optional result) &body body)
    "Analogous to DOLIST, but for vectors.
  Establishes a block named NIL."
    `(loop for ,var across ,vector
  	 do (progn ,@body)
  	 ,@(if result
  