arrays - Haskell 中不断增长的数组

标签 arrays haskell

我想在 Haskell 中实现以下(命令式)算法:

给定一系列对 [(e0,s0), (e1,s1), (e2,s2),...,(en,sn)],其中“e”和“s”部分都是自然的数字不一定不同,在每个时间步都会随机选择该序列的一个元素,比方说 (ei,si),并基于 (ei,si) 的值,构建一个新元素并将其添加到序列中。

如何在 Haskell 中有效地实现这一点?据我所知,随机访问的需要对于列表来说是不利的,而一次附加一个元素的需要对于数组来说则是不利的。

提前致谢。

最佳答案

我建议使用 Data.SetData.Sequence,具体取决于您的需要。后者特别为您提供对数索引查找(与列表的线性相反)和在任一端附加 O(1)。

关于arrays - Haskell 中不断增长的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7342862/

相关文章:

javascript - KnockoutJS 可观察数组

java - 在Java中的公共(public)数组中按属性对json对象列表进行分组

javascript - 从for()移到map()-无法绕开它

haskell - 简单代数数据类型的仿函数实例

haskell - 类型签名 […] 缺少随附的绑定(bind)

arrays - 是否可能:记录中的数组

javascript - 如何展示具体的JSON数据?

haskell - 如何在 ADT 或记录语法上使用 Monadic 绑定(bind)运算符

Haskell,不知道为什么输入 ‘if’ * 出现*解析错误

ODBC 中的 Haskell Unicode 列名