groupBy在元组的snd元素上

时间:2018-10-21 09:14:59

标签: haskell functional-programming

因此,我想使用groupBy根据元组列表的snd元素对它们进行分组。每个具有相同snd元素的元组都应位于同一列表中

group ::  [(Int,Int)] -> [[(Int,Int)]]
group = groupBy (\a b -> snd a == snd b) lijst

列表groupBy中的[(1,2),(8,9),(5,2),(9,2),(3,9),(1,1)]应该返回 [[(1,2),(5,2),(9,2)],[(8,9),(3,9)],[1,1]]

但是它返回[[(1,2)],[(8,9)],[(5,2),(9,2)],[(3,9)],[(1,1)]]

如何使此功能起作用?

1 个答案:

答案 0 :(得分:5)

在阅读groupBy的文档时,我们会参考group的文档,其中指出

  

group函数获取一个列表并返回一个列表列表,这样   结果的串联等于参数。

这不是很明显的说法:“我们只将相等,相邻的元素分组。”

所以sortBy首先是您的列表。