所以我试图将F#Set用作哈希表.但是我的元素类型没有实现IComparable接口(尽管它实现了IEquatable).我得到一个错误,说因为比较约束而不允许构造.通过进一步阅读,我发现F#Set是使用二叉树实现的,这会产生插入原因O(log(n)).这对我来说很奇怪,为什么Set结构是这样设计的?
编辑:所以我了解到SetF#实际上是一个SortedSet.我想这个问题变成了,为什么Sorted Set比一般的Hash Set更优选作为不可变/功能数据结构?
我知道这个问题与我前一段时间问过的问题非常相似:为什么 F# 的默认集合集合是排序的,而 C# 的默认集合集合不是?
不过,我想确认一下,这里给出的原因是否与本案相同?我想知道 F# 中是否有一个由某人编写的不可变实现Map,它不那么严格并且不需要 K 具有可比性?我很乐意使用它,因为我不太关心性能。