Я рекомендую проанализировать числа из пользовательского ввода с библиотекой parse-number
.Использование read
вместо этого дает пользователю прямой доступ к читателю Lisp, который вам не нужен.
Примерно так должно работать:
(defun prompt-number (prompt &optional (prompt-stream *standard-output*)
(read-stream *standard-input*))
(format prompt-stream "~a: " prompt)
(parse-number:parse-number (read-line read-stream)))