anchor.diff:      dir)))
   
   (defmacro filter-file ((line input-filename output-filename) &body body)
  -  "Copies lines from input to output, omitting lines for which body returns nil."
  +  "Copies lines from the file INPUT-FILENAME to the file OUTPUT-FILENAME, omitting lines for which BODY returns nil."
     (let ((output (gensym))
           (transformed-line (gensym)))
       `(with-open-file (,output ,output-filename
  
positive.code:          appending (list key (getf named-params key)))))
  
  (defun hash-keys (hash)
    "Returns a list of all the keys in the given hash table."
    (loop for a being the hash-keys in hash collect a))
  
  (defun hash-values (hash)
    "Returns a list of all the values in the given hash table."
    (loop for a being the hash-values in hash collect a))
  
  (defun interruptible-sleep (secs name)
    "Sets up a named timer and sleeps for secs seconds or until another thread calls the interrupt-sleep function with the given name.  This function checks once per second to see if the timer has been reached or interrupted."
    (let ((target (+ (get-universal-time) secs)))
      (setf (gethash name *interruptible-sleep-hash*) nil)
      (loop while (and (< (get-universal-time) target)
  
negative.code:      finally (return (nreverse c))))
  
  (defun fast-decompress (l)
    "Quickly decompresses the list or vector L, created by fast-compress, into the original vector."
    (map 'vector 'identity
         (if (listp l)
             (loop for n in l appending
  