我想在Haskell中实现以下(命令式)算法:
给定序列对[[e0,s0),(e1,s1),(e2,s2),...,(en,sn)],其中“e”和“s”部分都是自然数不同的是,在每个时间步长上随机选择该序列的一个元素,即(ei,si),然后基于(ei,si)的值构建一个新元素并将其添加到序列中。
如何在Haskell中有效地实现这一点?据我所知,需要随机访问将对列表不利,而一次附加一个元素将对数组不利。
提前致谢。
最佳答案
我建议您使用Data.Set
或Data.Sequence
,这取决于您的用途。后者尤其为您提供对数索引查找(与线性列表相反),并且在两端都附加了O(1)。
关于arrays - Haskell中不断增长的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7342862/