我正在开发一个程序,该程序将大量的IORef列表用于数据类型。这是一种更有效的内存/处理器方法:
[IORef Foo]或
IORef [Foo]忽略这样一个事实,即我使用的是列表而不是向量或数组。
发布于 2014-01-15 05:44:36
使用[IORef Foo],您可以轻松地更新元素,而使用IORef [Foo],您只能更新整个列表。由于您可能希望在不进行复制的情况下有效地更新元素,所以需要[IORef Foo]。想想看,你想要的是一张可变的东西清单,而不是一张不可变的清单。
作为一个例子
import Data.IORef
makeTest :: IO [IORef Int]
makeTest = sequence [newIORef 0, newIORef 1, newIORef 2]
main = do
test <- makeTest
readIORef (test !! 1) >>= print
modifyIORef (test !! 1) (+1) -- Doesn't copy list
readIORef (test !! 1) >>= printhttps://stackoverflow.com/questions/21129886
复制相似问题