【问题标题】:Data.IntMap vs Data.Sequence in Haskell (Haskell Collections)Haskell 中的 Data.IntMap 与 Data.Sequence(Haskell 集合)
【发布时间】:2021-08-09 01:46:14
【问题描述】:

Haskell 中 Data.Sequence / Seq aData.IntMap / IntMap a 之间的主要区别是什么?从我读过的所有内容来看,它们都提供了快速cons 功能、快速随机访问快速随机更新。有什么区别?

对于上下文,我需要所有这些(快速缺点快速随机访问快速随机更新)。

我应该选择哪个?

【问题讨论】:

  • 你对 IntMap 的缺点有什么实现? IntMap 索引不会“转移”。

标签: haskell collections


【解决方案1】:

Seq 为 0 到某个数字之间的每个索引存储一些内容。 IntMap 存储一些但不是所有 Int 值的东西。这是一个很大的概念差异,对空间使用有明显的影响——如果你的数据是稀疏的,你可能不想要密集的表示。我希望 Seq 的 Cons 和 snoc 比 IntMap 便宜一些,尽管它们具有不同的含义,而随机访问则要慢得多。听起来您可能对 Okasaki 所说的“随机访问列表”感兴趣,但在 SeqIntMap 之间,您最好分析一下您的具体算法和基准。

【讨论】:

  • 随机访问Seq 在大多数情况下会比IntMap 慢一些,但它仍然是次线性的。这不是什么。
  • @Carl,当然。 Louis Wasserman 关于 cons 和 snoc 做不同事情的观点最终可能更重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-29
  • 1970-01-01
  • 2016-02-12
  • 2020-05-01
  • 2018-03-17
  • 1970-01-01
相关资源
最近更新 更多