anchor.diff:  the main script  (setf script:*program-name* (script:pname))
   "
     (file-namestring *program-name*))
  -
  -
  -(defparameter *options*
  -  (make-hash-table :test (function equal))
  -  "The dictionary of options.")
   
   
   (defstruct option
  
positive.code:                     :while arguments
                      :do (setf arguments (call-option-function (pop arguments)
                                                                arguments
                                                                undefined-argument)))
                    nil)
                   (default
                    (funcall default)))))
  
negative.code:                      argument is found in ARGUMENTS.  It should return
                       the new remaining list of arguments.
  ")
    (:method ((key string) arguments undefined-argument case-sensitive)
      (let* ((funopt (get-option key case-sensitive)))
        (cond
          (funopt             (call-option-function funopt arguments undefined-argument case-sensitive))
          (undefined-argument (funcall undefined-argument key arguments))
          (t                  (error "Unknown option ~A ; try: ~A help" key (pname))))))
    (:method ((option option) arguments undefined-argument case-sensitive)
      (declare (ignore undefined-argument case-sensitive))
      (funcall (option-function option) arguments)))
  
  
  