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