anchor.diff:                                          (coerce (nreverse chars) 'string)))))))
   
   (defun spew (string filename &key create-directories append)
  -  "Writes the contents of string to the file specified by filename."
  +  "Writes the contents of STRING to the file specified by FILENAME.  Use the CREATE-DIRECTORIES parameter if any of the directories in the path in FILENAME don't exist and you want to create them.  Use the APPEND parameter if you want to append STRING to an existing file."
     (when create-directories
       (create-directory (directory-namestring filename) :with-parents t))
     (with-open-file (stream filename :direction :output :if-exists :supersede)
       (write-string string stream)))
   
   (defun slurp-n-thaw (filename)
  -  "Reads and brings to life serialized objects from a file."
  +  "Reads and brings to life serialized objects from the file FILENAME."
     (with-open-file (stream filename) (read stream)))
   
   (defun freeze-n-spew (object filename)
  -  "Serializes an object into a string and writes the string to the file specified by filename."
  +  "Serializes OBJECT into a string and writes the string to the file specified by FILENAME."
     (with-open-file (stream filename :direction :output :if-exists :supersede)
       (write object :stream stream :readably t)))
   
   (defun lof (filename)
  -  "Returns the length of the given file."
  +  "Returns the length of the file FILENAME."
     (with-open-file (f filename) (file-length f)))
   
   (defun unique-file-name (&key (directory "/tmp") (extension ".tmp"))
  -  "Returns a made-up, unique file name.  The directory defaults to /tmp and the extension to .tmp, but you can also specify your own directory and extension."
  +  "Returns a made-up, unique file name.  DIRECTORY defaults to /tmp and EXTENSION to .tmp."
     (join-paths
      directory
      (format nil "~a~a"
  
positive.code:      finally (return hash)))
  
  (defun distinct-elements (list)
    "Accepts a list of elements and returns a new list with distinct elements from the first list.  (Copies the original list, removes duplicate elements from the copy, and returns the copy.)"
    (loop with h = (make-hash-table :test 'equal)
       for v = 0 then (1+ v)
       for k in list do (unless (gethash k h)
  
negative.code:        finally (return settings)))
  
  (defun load-settings (&rest filepaths)
    "Accepts one or more file paths, collected in FILEPATHS, and reads settings from the given files, with settings in later files overriding the same settings in earlier files.  Each settings file is a Lisp file with a dc-utilities data structure."
    (setf *settings*
          (apply #'read-settings-file filepaths)))
  
  (defun setting (&rest keys)
    "Accepts one or more parameters, collected in KEYS, which are used to traverse the settings data structure to locate the desired value."
    (apply #'ds-get (cons *settings* keys)))
  
  (defun ds-keys (ds &optional parent-keys)
    "Given a dc-utilities data structure DS, this function returns the path to every leaf.  If you provide a key or list of keys in PARENT-KEYS, those keys are prepended to the path to every leaf."
    (when (and parent-keys (atom parent-keys))
      (setf parent-keys (list parent-keys)))
    (case (ds-type ds)
  