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

gcb*_*son 17 haskell

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

Tho*_*son 20

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


Nor*_*sey 19

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

这两种实现都经过多年的竞争磨练,以便通过Haskell获得最佳性能.

投降多萝西!

  • 这与托马斯的答案相结合,形成了一个很好的答案.`Data.Set`很棒,有一个很棒的界面,并且在大多数情况下足够快(比我们任何人手动滚动要好得多),但是(就像所有事情一样)它不能最佳地解决每个问题.在你需要之前不要担心; 当你这样做时,看看其他一些库. (2认同)