anchor.diff:            :initially (format *query-io* "Choice of ~(~A~):~%" field)
             :do (format *query-io* "~3D. ~A~%" i c)
             :finally (progn
  -                     (format *query-io* "Enter a number or a list of numbers in parentheses: ")
  +                     (format *query-io* "Enter a menu index or a list of menu indices: ")
                        (finish-output *query-io*)
                        (return
  -                      (let ((answer (let ((*read-eval* nil)) (read *query-io*))))
  +                       (let ((answer (process-answer-line (read-line *query-io*))))
                           (if (eql 0 answer)
                               choices
                               (delete nil
  
positive.code:       :do (setf selection (select selection-field selection))
        :finally (report-selection selection))))
  
  
  ;;;; THE END ;;;;
  
negative.code:    (function string<)))
  
  
  (defun process-answer-line (line)
    (let ((line (substitute-if #\space (lambda (ch) (find ch "	,.;()[]!:")) line)))
      (when (every (lambda (ch) (or (char= #\space ch) (digit-char-p ch))) line)
        (let ((answer (with-input-from-string (inp line)
                         (loop
                           :for index = (read inp nil nil)
                           :while index :collect index))))
          (if (= 1 (length answer))
              (first answer)
              answer)))))
  
  
  (defun select (field &optional (implementations *implementations*))
    "
  DO:     Let the user choose the IMPLEMENTATIONS he wants to select based on the FIELD.
  