anchor.diff:  
   (in-package :command-line-arguments)
   
  +;;(declaim (optimize (speed 1) (safety 3) (debug 3)))
   
   (defvar *command-line-arguments* nil
     "a list of strings, the arguments passed to the program on its command-line,
  
positive.code:   ;; TODO: be clever when trying to align stuff vertically
    (loop :for spec :in specification :do
          (destructuring-bind (names &key negation documentation negation-documentation
                                     type optional list &allow-other-keys) spec
            (declare (ignorable negation documentation negation-documentation type optional list))
            (when documentation
              (format stream " ~25A  ~A~%"
                      (format nil "~{ ~A~}" (mapcar 'option-name names))
                      documentation))
            (when negation-documentation
              (format stream " ~25A  ~A~%"
                      (format nil "~{ ~A~}" (mapcar 'option-name (make-negated-names names negation)))
  
negative.code: 
  (defparameter *opt-spec*
   '((("all" #\a) :type boolean :documentation "do it all")
     ("blah" :type string :initial-value "blob" :documentation "blah")
     (("verbose" #\v) :type boolean :documentation "include debugging output")
     (("file" #\f) :type string :documentation "read from file instead of standard input")
     (("xml-port" #\x) :type integer :optional t :documentation "specify port for an XML listener")
     (("http-port" #\h) :type integer :initial-value 80 :documentation "specify port for an HTTP listener")
     ("enable-cache" :type boolean :documentation "enable cache for queries")
     ("path" :type string :list t :optional t :documentation "add given directory to the path")
     ("port" :type integer :list (:initial-contents (1 2)) :optional t :documentation "add a normal listen on given port")))
  
  (defun foo (args &key all verbose file xml-port enable-cache port path http-port blah)
    (list args :all all :verbose verbose :file file :xml-port xml-port :http-port http-port :blah blah
          :enable-cache enable-cache :port port :path path))
  
  (multiple-value-bind (options arguments)
      (process-command-line-options
       *opt-spec*
       '("--all" "--no-verbose" "--file" "foo" "-f" "-v" "-v"
         "-x" "--disable-cache" "-h" "8080"
         "--no-port" "--port" "3" "--port=4"
         "--path" "/foo" "--path" "/bar"
         "--" "--foo" "bar" "baz"))
  