[Haskell-cafe] How can i safely change the value of specified
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 ?
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
>> 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
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