当从 C# 世界迁移到 F#(最惯用的可能)思维方式时,我发现了这个有趣的差异。
在 C# 的 OOP&mutable 世界中,默认的集合集合似乎是HashSet,默认情况下它似乎没有排序(因为它接受的比较器只是为了相等);而如果你想要一个排序的,则必须使用SortedSet。
然而在 F# 的世界中,基本set
已经排序了,因为它需要用于实现相等和比较的元素类型。这有什么具体原因吗?为什么不在该语言的主要集合中设置无序集合?
作为旁注,我想知道是否有可能有一个不允许重复的集合,但在丢弃某些元素作为重复项时,它比某些元素具有优先权。示例:一条记录,{ Name: string; Flag: Option<unit> }
以便在插入时{ Name = "foo"; Flag = None }
和稍后{ Name = "foo"; Flag = Some() }
它最终仅包含后一个元素(因为存在 Flag)。
米脂
相关分类