Friday, August 17, 2018

Data Structures with Clojure

user=> (defrecord Person [fname lname address])
user.Person
user=> (def greg (Person. "Greg" "Helton" "Texas"))
#'user/greg
user=> (def bill (Person. "Bill" "Gates" "Seattle"))
#'user/bill
user=> (def team '(bill greg))
#'user/team
user=> (nth team 1)
greg
user=> (:lname greg)
"Helton"
user=> (defrecord Languages [^String lang1 ^String lang2 ^String lang3])
user.Languages
user=> (defrecord Pgmr [^String fname ^String lname ^Languages languages]) 
user.Pgmr
user=> (def rich ["Rich" "Hickey" ["Clojure" "C++" "Lisp"]])
#'user/rich
user=> (println rich)
[Rich Hickey [Clojure C++ Lisp]]
nil

Decimal Math

user=> (+ 1 (+ 5 7))
13
user=> (+ 1 0.98M)
1.98M
user=> (+ 1 0.98M 0.97M 0.96M 0.95M)
4.86M