 (defn uuid
   "Creates a random, immutable UUID object that is comparable using the '=' function."
   [] (. java.util.UUID randomUUID))
-
-(defn invert-map
-  "Make the keys the values and the values the keys.  Note, if there are
-  duplicate values in the map they will result in key collisions and a smaller
-  result map."
-  [m]
-  (apply hash-map (interleave (vals m) (keys m))))
 
 (defn cpu-count
   "Get the number of CPUs on this machine."

  (let [arg-map (arg-mapper args arg-names default-map)]
    (vec (map arg-map arg-names))))

; TODO: generate arglists and doc meta-data and attach to var
(defmacro defunk [name args & body]
  (let [arg-names (map first (partition 2 args))



(defn invert-map
  "Takes a map m and returns a new map that's keys are the m's vals and that's vals are m's keys.
   Assumes that m's keys and vals are both sets (i.e. don't contain any duplicates). If there are duplicate values in the map they will result in key collisions and a smaller result map.

   (invert-map {:a 1, :b 2, :c 3}) ;=> {1 :a, 2 :b, 3 :c}"
  [m]
  (apply hash-map (interleave (vals m) (keys m))))
