[Haskell-cafe] How can i safely change the value of specified
key ?
zaxis
z_axis at 163.com
Thu Oct 22 05:03:21 EDT 2009
>>value <- readIORef aaa
>>writeIORef aaa (f value)
then aaa will *point to* a new value. The original value will be Garbage
Collected, right ?
BTW,
Is [(1,1),(2,2),(3,3)] been regarded as a hash ? If not, what is the best
way to change it to [(1,1),(2,2222),(3,3)] in function `f` ?
Bulat Ziganshin-2 wrote:
>
> Hello zaxis,
>
> Thursday, October 22, 2009, 11:28:14 AM, you wrote:
>
>> aaa <- newIORef ([]::[(Int,Int)])
>> writeIORef aaa [(1,1),(2,2),(3,3)]
>
>> then if i want to change aaa to [(1,1),(2,222),(3,3)] , what's the best
>> way
>> ?
>> re-write aaa is not permitted.
>
> it's the only way. in Haskell, you have *immutable* values. aaa is a
> reference to immutable value. you can mutate reference so it will
> point to another immutable value but you cannot change this value.
>
> there are two ways to make aaa==[(1,1),(2,222),(3,3)]. first, you can
> apply function to whole value:
>
> value <- readIORef aaa
> writeIORef aaa (f value)
>
> second, you may create list of IORefs, tuple of IORefs and so:
>
> a <- newIORef (1,1)
> ...
> let aaa = [a,b,c]
>
> now aaa is a immutable list of mutable IORefs. of course, you can
> create IORef pointing to list of IORefs too
>
>
>
> --
> Best regards,
> Bulat mailto:Bulat.Ziganshin at gmail.com
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
--
View this message in context: http://www.nabble.com/How-can-i-safely-change-the-value-of-specified-key---tp26005244p26006471.html
Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.
More information about the Haskell-Cafe
mailing list