Extract parsing logic from read-integers into parse-integers

This commit is contained in:
2025-02-10 06:28:40 +00:00
parent 6b60c5065b
commit 5a48b66dd6

View File

@@ -20,21 +20,22 @@
(in-package :main) (in-package :main)
(fn read-input (&optional (prompt "> ")) (fn read-input (&optional (prompt "> ")) (-> (&optional string) string)
(-> (&optional string) string)
(format t "~a" prompt) (format t "~a" prompt)
(force-output) (force-output)
(read-line)) (read-line))
(fn read-integers () (fn parse-integers (input) (-> (string) list)
(-> nil list) (->> input
(->> (read-input "Enter numbers: ")
(uiop:split-string) (uiop:split-string)
(mapcar (lambda (s) (parse-integer s :junk-allowed t))) (mapcar (lambda (s) (parse-integer s :junk-allowed t)))
(remove-if #'null))) (remove-if #'null)))
(fn read-until-integers () (fn read-integers () (-> nil list)
(-> nil list) (->> (read-input "Enter numbers: ")
parse-integers))
(fn read-until-integers () (-> nil list)
(let ((inp (read-integers))) (let ((inp (read-integers)))
(while (null inp) (while (null inp)
(format t "Need at least one integer...~%") (format t "Need at least one integer...~%")