我找到了一些示例代码,并对其进行了一些更改
counter = unsafePerform $ newIORef 0
newNode _ = unsafePerformIO $
do
i <- readIORef counter
writeIORef counter (i+1)
return i
每次运行时返回 1 然后 2 然后 3 然后 3 等等。
但是当我把它改成
newNode = unsafePerformIO $
do
i <- readIORef counter
writeIORef counter (i+1)
return i
然后我每次运行它都会得到 0 。
为什么会发生这种情况,我能做些什么来解决它?