aboutsummaryrefslogtreecommitdiff
path: root/main.lisp
diff options
context:
space:
mode:
authorAryadev Chavali <aryadev@aryadevchavali.com>2025-02-09 12:36:40 +0000
committerAryadev Chavali <aryadev@aryadevchavali.com>2025-02-11 00:40:19 +0000
commitbd47029bd83f81ea7ce5fbcc7f9f711a32ba00ca (patch)
tree58aafcbfd38956f58fc1cf5774afbaa1c4efb715 /main.lisp
parent4977b427d840de3390b802cef297b7c233fe2436 (diff)
downloadcantedraw-bd47029bd83f81ea7ce5fbcc7f9f711a32ba00ca.tar.gz
cantedraw-bd47029bd83f81ea7ce5fbcc7f9f711a32ba00ca.tar.bz2
cantedraw-bd47029bd83f81ea7ce5fbcc7f9f711a32ba00ca.zip
Implement a program that reads some integers then prints their sum
Allows junk, and doesn't crash horribly.
Diffstat (limited to 'main.lisp')
-rw-r--r--main.lisp17
1 files changed, 15 insertions, 2 deletions
diff --git a/main.lisp b/main.lisp
index 187e771..6076581 100644
--- a/main.lisp
+++ b/main.lisp
@@ -25,6 +25,19 @@
(force-output)
(read-line))
+(defun read-integers ()
+ (->> (read-input "Enter numbers: ")
+ (uiop:split-string)
+ (mapcar (lambda (s) (parse-integer s :junk-allowed t)))
+ (remove-if #'null)))
+
+(defun read-until-integers ()
+ (let ((inp (read-integers)))
+ (while (null inp)
+ (format t "Need at least one integer...~%")
+ (setq inp (read-integers)))
+ inp))
+
(defun start ()
- (->> (read-input "Enter name: ")
- (format t "Hello, ~a!~%")))
+ (--> (read-until-integers)
+ (format t "~a = ~a~%" (cons '+ _) (reduce #'+ _))))