Я хочу использовать 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
Но это не лучше первой попытки. Есть ли решение этой проблемы с помощью стандартной библиотеки, прежде чем я займусь собственной разработкой?