I absolutely love the user razvan’s Clojure defrecord example over at stackoverflow, so I copied it here. I know I’ll never find it again if I don’t. Look at the original over on stackoverflow at this link.
Here’s the example …
Clojure defrecord example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
;;define Address record (defrecord Address [city state]) ;;define Person record (defrecord Person [firstname lastname ^Address address]) ;;buid the constructor (defn make-person ([fname lname city state] (->Person fname lname (->Address city state)))) ;;create a person (def person1 (make-person "John" "Doe" "LA" "CA")) ;;retrieve values (:firstname person1) (:city (:address person1)) |
If you’re looking for more information on combining protocols with records in Clojure, then Matthew Boston has the blog for you!