类 / 构造函数

(defrecord Man [name country])

;; ->Man has no defaults of its own; a wrapper with named
;; arguments and :or gives them
(defn make-man [& {:keys [name country]
                   :or {name "unknown" country "unknown"}}]
  (->Man name country))

(def man1 (make-man))
(def man2 (make-man :name "Vladimir"))
(def man3 (make-man :country "Brazil"))
(def man4 (make-man :name "Vladimir" :country "Brazil"))

(doseq [m [man1 man2 man3 man4]]
  (println (:name m) "-" (:country m)))