首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haskell IORef数组使用

Haskell IORef数组使用
EN

Stack Overflow用户
提问于 2014-01-15 05:40:48
回答 1查看 528关注 0票数 5

我正在开发一个程序,该程序将大量的IORef列表用于数据类型。这是一种更有效的内存/处理器方法:

代码语言:javascript
复制
[IORef Foo]

代码语言:javascript
复制
IORef [Foo]

忽略这样一个事实,即我使用的是列表而不是向量或数组。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-15 05:44:36

使用[IORef Foo],您可以轻松地更新元素,而使用IORef [Foo],您只能更新整个列表。由于您可能希望在不进行复制的情况下有效地更新元素,所以需要[IORef Foo]。想想看,你想要的是一张可变的东西清单,而不是一张不可变的清单。

作为一个例子

代码语言:javascript
复制
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) >>= print
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21129886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档