On Jun 4, 2010, at 14:11 , Heinz N. Gies wrote: > > On Jun 4, 2010, at 14:03 , Joost wrote: > >> On Jun 4, 1:42 pm, "Heinz N. Gies" <he...@licenser.net> wrote: >>> Sorry I mixed arguments, it should be (update-in {1 2} [] (constantly {2 >>> 3})) >> >> Yes, that gives {nil {2 3}, 1 2} >> >> You're not giving any key in the key list, so that is the reason >> there's a nil key now, and {2 3} is just the value that you give it, >> since that's what ((constantly {2 3}) nil) returns. >> >> Seems correct as far as the documentation of update-in is concerned.
So for how I'd expect it to work: (defn update-in* ([m [k & ks] f & args] (if ks (assoc m k (apply update-in* (get m k) ks f args)) (if k (assoc m k (apply f (get m k) args)) (apply f m args))))) user> (get-in {1 2} []) {1 2} user> (update-in* {1 2} [] assoc 1 3) {1 3} In opposite of how it works: user> (update-in {1 2} [] assoc 1 3) {nil {1 3}, 1 2} -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en