Skip to content

Instantly share code, notes, and snippets.

(new-rocket-car {:color "Blue"})
;; -> (new-rocket-car {:color "Blue"})
(new-rocket-car {:color "Blue" :fuel 100 :name "Zoomer"})
;; -> (new-rocket-car {:name "Zoomer", :fuel 100, :color "Blue"})
(defrecord2 RocketCar [color fuel name])
(ns enhanced-record
(:require [clojure.contrib.str-utils2 :as str2])
(:use [clojure.string :only (join)]
[clojure.contrib.pprint :only
(*simple-dispatch* use-method pprint-map pprint)]))
;;;; enhanced records
;; internal helper for maps
#:enhanced-record-blog.Car{:year 2009, :make "Honda", :model "Fit"}
;; -> No dispatch macro for: :
(merge (Car. 2010 "Honda" "Civic") {:year 2009 :model "Fit"})
;; -> #:enhanced-record-blog.Car{:year 2009, :make "Honda", :model "Fit"}
(assoc (Car. 2010 "Honda" "Civic") :model "Accord")
;; -> #:enhanced-record-blog.Car{:year 2010, :make "Honda", :model "Accord"}
(Car. 2010 "Honda" nil)
;; -> #:enhanced-record-blog.Car{:year 2010, :make "Honda", :model nil}
(Car. 2010 "Honda" "Civic")
;; -> #:enhanced-record-blog.Car{:year 2010, :make "Honda", :model "Civic"}
(Car. 2010 "Honda" "Civic")