f#设置和映射相等

时间:2013-12-05 18:25:50

标签: map f# set equality

F#immutable集和映射的set1 = set2如何工作?他们会做出正确的集合/地图平等吗?

文档说:

  

基于二叉树的不可变集,其中比较是F#   结构比较函数,可能使用的实现   关键值的IComparable接口。

它们基于二叉树,因此可能不会根据订单元素插入确切的形式?如此天真地使用F#结构比较函数是行不通的......

我在文档中找不到任何相关内容。我错过了吗?

1 个答案:

答案 0 :(得分:10)

是的,显然它会正常工作。

查看the sourceEquals被覆盖并使用GetEnumerator并检查它们是否以相同的顺序返回相同的元素。这些应该按照this question中的顺序排列,因为Set.toSeq的文档说:“集合元素的有序序列。”

Jon Harrop和Don Syme在“F#for Scientists”一书中也提到了这一点:

quote from "F# for Scientists"