Ah, you got there first :)
James
On Tuesday, 17 June 2014 19:20:52 UTC+1, James Henderson wrote:
>
> 'alter' expects your anonymous function to take at least one argument (the
> current value of the ref being altered), whereas you've passed a 0-arg
> function - there's no mention of a '%' so Clojure expands it to:
>
> (fn []
> (update-in @v (fnil conj [])))
>
> Indeed, I suspect you want a 2-arg function here - one for the current
> value of the ref and one for the number to conj on - if you were writing it
> in expanded form you'd write:
>
> (fn [v x]
> (update-in v (fnil conj []) x))
>
> Or, in compact form:
>
> #(update-in %1 (fnil conj []) %2)
>
> HTH,
>
> James
>
> On Tuesday, 17 June 2014 19:05:10 UTC+1, Hussein B. wrote:
>>
>> Thanks, it works.
>>
>> In case, my initial map is a ref type
>>
>> (def m (ref { } ))
>>
>> Why this isn't working?
>>
>> (dosync
>>
>> (alter m #(update-in @v [1] (fnil conj [ ])) 11))
>>
>> On Tuesday, June 17, 2014 7:55:14 PM UTC+2, Mauricio Aldazosa wrote:
>>>
>>> For updating the value of a map given a key you can use update-in:
>>>
>>> user> (update-in {1 [11]} [1] conj 22)
>>> {1 [11 22]}
>>>
>>> Now, to handle the case when the key is not present, you can use fnil:
>>>
>>> user> (update-in {} [1] (fnil conj []) 22)
>>> {1 [22]}
>>>
>>> Cheers,
>>> Mauricio
>>>
>>
--
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
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.