サンプルコードを見つけて、少し変更しました
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になります。
なぜこれが起こっているのですか?それを修正するにはどうすればよいですか?