几个月前,我读到了一个有效的方法,通过用函数组合表示它们来添加和预先将列表添加到O(1)中的其他列表,这些函数组合一旦被评估,就会在结果列表中构建O(n)。
不幸的是,我不记得这篇文章的来源或(如果存在的话)这种技术/方法的名称。你有关于它的推荐信吗?
答案 0 :(得分:11)
数据结构称为差异列表(简称DList
)。您可以找到它的默认实现in a library available on Hackage。
如您所述,可以从a chapter in Real World Haskell on the subject收集完整说明。
答案 1 :(得分:1)
你必须考虑前导中的ShowS
和朋友。请参阅here。