   created."
   {:added "1.0"
    :static true}
-  ([m ks f & args]
-   (let [k  (first ks)
-         ks (rest ks)]
-     (if ks
-       (assoc m k (apply update-in (get m k) ks f args))
-       (assoc m k (apply f (get m k) args))))))
+  ([m [k & ks] f & args]
+   (if ks
+     (assoc m k (apply update-in (get m k) ks f args))
+     (assoc m k (apply f (get m k) args)))))
 
 (defn update
   "'Updates' a value in an associative structure, where k is a

  If any levels do not exist, hash-maps will be created."
  {:added "1.0"
   :static true}
  [m ks v]
  (let [k  (first ks)
        ks (rest ks)]
    (if ks
      (assoc m k (assoc-in (get m k) ks v))
      (assoc m k v))))

(defn update-in
  "'Updates' a value in a nested associative structure, where ks is a

  {:added "1.0"
   :static true}
  ([f]
     (let [ret (f)]
       (if (fn? ret)
         (recur ret)
         ret)))
  ([f & args]
     (trampoline #(apply f args))))

(defn intern
  "Finds or creates a var named by the symbol name in the namespace
