anchor.diff:     (or (parse-integer (prompt-read "Rating") :junk-allowed t) 0)
      (y-or-n-p "Ripped [y/n]: ")))
   
  +
   (defun add-cds ()
     (loop (add-record (prompt-for-cd))
        (if (not (y-or-n-p "Another? [y/n]: ")) 
   	 (return))))
  +
   
   (defun save-db (filename)
     (with-open-file (out filename
  
positive.code:     (with-standard-io-syntax
        (print *db* out))))
  
  (defun load-db (filename)
    (with-open-file (in filename)
      (with-standard-io-syntax
        (setf *db* (read in)))))
  
  (defun select (selector-fn)
    (remove-if-not selector-fn *db*))
  
  ;; (defun where (&key title artist rating (ripped nil ripped-p))
  ;;   #'(lambda (cd)
  
negative.code: (defvar *db* nil)
  
  
  (defun make-cd (title artist rating ripped)
    (list :title title :artist artist :rating rating :ripped ripped))
  
  
  (defun add-record (cd) (push cd *db*))
  
  
  (defun dump-db ()
    (dolist (cd *db*)
      (format t "~{~a:~10t~a~%~}~%" cd)))
  
  
  (defun prompt-read (prompt)
    (format *query-io* "~a: " prompt)
    (force-output *query-io*)
    (read-line *query-io*))
  
  
  (defun prompt-for-cd ()
    (make-cd
  