是否有针对此Haskell问题的标准库解决方案?

时间:2011-09-19 21:15:13

标签: haskell functional-programming standard-library

我想使用Data.List.groupBy根据snd元素的相等性对元组列表进行分组。
我能做到这一点:

groupBy (\l r -> snd l == snd r) listOfTuples

但是它在比较函数中给我带来了太多的样板 - 特别是因为如果我进行更复杂的比较,它可能会变得更加混乱。我想做点什么:

groupBy (comparing snd) listOfTuples

但是比较的类型签名是comparing :: (Ord a) => (b -> a) -> b -> b -> Ordering,所以在这个例子中它不能编译 我也可以这样做:

groupBy (\l r -> (comparing snd l r) == EQ) listOfTuples

但这并不比第一次尝试好。在我滚动自己之前,是否有针对此问题的标准库解决方案?

2 个答案:

答案 0 :(得分:15)

groupBy ((==) `on` snd) listOfTuples

我认为标准库中曾经有equating = on (==),但我现在似乎无法找到它。

答案 1 :(得分:-1)

这是你想要的吗?

groupBy ((==EQ) . comparing snd) listOfTuples