anchor.diff:  (defun take-while (predicate list)
     "Applied to PREDICATE and LIST, returns a list containing elements
   from the front of LIST while PREDICATE is satisfied."
  -  (when (and (functionp predicate) (consp list))
  +  (when (and (functionp predicate) (listp list))
       (let ((result (cons nil nil)))
         (do ((list list (rest list))
              (splice result (rest (rplacd splice
  
positive.code: in the first list are taken from the head of LIST while PREDICATE is
  satisfied, and elements in the second list are the remaining elements
  from LIST once PREDICATE is not satisfied."
    (when (and (functionp predicate) (consp list))
      (let ((result (cons nil nil)))
        (do ((list list (rest list))
             (splice result (rest (rplacd splice (cons (first list) nil)))))
  
negative.code:   "Applied to the association list ALIST, returns two lists (as
  VALUES) containing the keys and values of each element in ALIST
  respectively.  This function is the inverse of PAIRLIS."
    (when (listp alist)
      (do ((alist alist (rest alist))
           (xs nil (cons (caar alist) xs))
           (ys nil (cons (cdar alist) ys)))
  