Simple types / Numbers / Integer

;; a number with the N suffix is a BigInt literal, unbounded in size
(def a 9223372036854775807N)
(println "a is" a (type a))

(def b 255N)
(def c 1000N)

(def a2 (* a c))
;; a2 is 9223372036854775807000N
(println "a2 is" a2)

(def a3 (quot (+ a2 c) b))
;; a3 is 36170086419038336501N
(println "a3 is" a3)

;; plain long arithmetic would throw here, *' promotes to BigInt
(println "20! is" (reduce *' (range 1 21)))
(println "30! is" (reduce *' (range 1 31)))