Data.Set:它总是最了解吗?

时间:2012-03-18 03:53:17

标签: haskell

我需要代表一个集合,我开始使用Data.Set。我发现没有什么可以做的 - singletonunionintersection等都在那里。我喜欢。我可以表达“什么”,而不是“如何”。但我内心的C程序员很不舒服。有很多方法可以实现一个集合(二叉树,哈希,布尔数组等)。我真的可以信任Data.Set来选择最好的吗?我能否以某种方式引导它,或者我只是屈服于它(我承认,可能更优秀)的判断?

2 个答案:

答案 0 :(得分:20)

Data.Set没有内心智慧(只看the source!)。它只是一棵平衡的树或有序的元素。您可以浏览具有不同性能特征的许多其他集合和类似结构的hackage。例如,请参阅unordered-containers(HashSet),HashTablesbloomfilter

答案 1 :(得分:19)

通用Data.Set使用平衡二叉树。如果你有整数或位向量集,你需要Data.IntSet,它使用Patricia尝试。

这两种实现都经过了的竞争,以便通过Haskell获得最佳性能。

投降多萝西!