Haskell通过fst对列表元素进行分组

Haskell通过fst对列表元素进行分组,haskell,list-comprehension,Haskell,List Comprehension,我想写一个函数 group::[(Int, Int)]->[[(Int, Int)]] 这会根据第一个坐标将元组列表的元素分组为子组,即: group [(1,1),(1,2),(2,1),(2,2),(2,3)] 应该导致 [[(1,1),(1,2)],[(2,1),(2,2),(2,3)]] 我想列表理解是一种方式,但我有点被卡住了。。有人能提供建议/解决方案吗 PS该函数还可以将第一个坐标的最大值作为参数,如果这有帮助的话您可以使用 该函数在这里非常有用,可以在不混淆代码的情况

我想写一个函数

group::[(Int, Int)]->[[(Int, Int)]]
这会根据第一个坐标将元组列表的元素分组为子组,即:

group [(1,1),(1,2),(2,1),(2,2),(2,3)]
应该导致

[[(1,1),(1,2)],[(2,1),(2,2),(2,3)]]
我想列表理解是一种方式,但我有点被卡住了。。有人能提供建议/解决方案吗

PS该函数还可以将第一个坐标的最大值作为参数,如果这有帮助的话

您可以使用

该函数在这里非常有用,可以在不混淆代码的情况下将代码缩短一点:

λ: groupBy ((==) `on` fst) [(1,1),(1,2),(2,1),(2,2),(2,3)]
[[(1,1),(1,2)],[(2,1),(2,2),(2,3)]]
λ: groupBy ((==) `on` fst) [(1,1),(1,2),(2,1),(2,2),(2,3)]
[[(1,1),(1,2)],[(2,1),(2,2),(2,3)]]