Есть ли стандартное библиотечное решение этой проблемы Haskell?

Я хочу использовать 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

Но это не лучше первой попытки. Есть ли решение этой проблемы с помощью стандартной библиотеки, прежде чем я займусь собственной разработкой?

5
задан Matt Fenwick 19 September 2011 в 21:15
поделиться