【发布时间】:2011-11-19 20:26:31
【问题描述】:
我很难从我通过 Google 找到的文档和其他方法/讨论中理解 STArray。我在下面有一些更相关的问题。
根据文档,STArrays 是
ST monad 中的可变装箱和未装箱数组。
这给我的印象是,STArray 旨在用作在函数之间传递的状态(假设您有一个必须经常更新的向量)。
显然这是不同的用法:
ST s (STArray s a e)
s 这里的状态是什么?如果是内部使用,那为什么不对用户隐藏呢?
这也意味着,如果我们想使用 STArray s Int Int 作为状态传递,可以定义
type StateArray a = Control.Monad.State (ST s (STArray s Int Int)) a
这看起来相当麻烦。
最后,
-
ST和State有什么区别? - 如果
ST和IO用于“内部”使用,STArray和IOArray之间有什么区别?
谢谢!!
【问题讨论】:
-
如果你想看看向量,通常比数组更容易使用。
标签: arrays haskell state higher-rank-types