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" <[email protected]> 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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en