 
 (defmacro update-record
   "Construct a record given a list of forms like (update-fn record-field & args). Mapping fields
-  into constuctor arguments is done an compile time, so this is more efficient than calling assoc on
+  into constuctor arguments is done at compile time, so this is more efficient than calling assoc on
   an existing record."
   [record & forms]
   (let [type   (or (type-hint (get &env record)) (throw (Exception. "type hint required on record to use update-record")))


(defmacro make-record
  "Construct a record given a pairs of lists and values. Mapping fields into constuctor arguments is
  done an compile time, so this is more efficient than creating an empty record and calling merge."
  [type & attrs]
  (let [fields (record-fields type)
        index  (position fields)

  (and binding (.hasJavaClass binding) (.getJavaClass binding)))

(defmacro assoc-record
  "Assoc attrs into a record. Mapping fields into constuctor arguments is done at compile time,
   so this is more efficient than calling assoc on an existing record."
  [record & attrs]
  (let [type   (or (type-hint (get &env record)) (throw (Exception. "type hint required on record to use assoc-record")))
