|
|
1
34
看一看这本书 ghc 实施 groupBy :
现在比较这两个输出:
简言之,发生的情况是:
编辑 :以下实现仅假设可传递性:
|
|
|
2
9
您可能会期望一些行为,因为您将以不同的方式实现它,但这不是它所承诺的。
现在有3组相等的元素。因此,它会检查它们中是否有任何一个实际上是相同的: 因为它知道每个组中的所有元素都是相等的,所以它可以只查看每个组中的第一个元素,1、2和1。
1>1.不所以最后一组是。 现在它比较了所有元素的相等性。
简言之 when it wants an equality test, give it an equality test . |
|
|
3
9
问题是,参考实现
|
|
|
4
0
我只想指出,groupBy函数还要求在应用列表之前对列表进行排序。
之所以出现这种行为,是因为groupBy在其定义中使用了span。为了获得不依赖于我们以任何特定顺序拥有基础列表的合理行为,我们可以定义一个函数:
|