【发布时间】:2011-09-13 22:53:40
【问题描述】:
我正在编写一些需要经常附加到列表末尾的代码。我知道使用“++”是低效的。因此,我通过附加到头部来向后构建列表,然后在完成后将其反转。我认为这是一种常见的初学者策略。
我宁愿一开始就以正确的顺序构建它——但这意味着切换到一个新的数据结构。我正在考虑为我的容器使用 Data.Sequence 或 Data.DList。我的列表由严格的 int 对组成,我不需要随机访问它。 Data.Sequence 和 Data.DList 的相对优点是什么,我应该考虑其他容器吗?
【问题讨论】:
-
我会使用
Data.Sequence,因为它除了containers之外没有外部依赖,它是标准平台附带的。 -
@FUZxxl
DList实现非常简单,可以在没有外部依赖的情况下使用(如type DList a = [a] -> [a]、append = (.)、toList = ($[])、fromList = (++)等)。 -
也许您可以发布一些代码让我们知道您需要什么样的解决方案。
-
另请参阅stackoverflow.com/questions/3352418/what-is-a-dlist/… 了解 dlist 的起源。