groupBy на элементе snd кортежа - PullRequest
0 голосов
/ 21 октября 2018

Итак, я хотел бы использовать groupBy для группировки своего списка кортежей на основе их элемента snd.Каждый кортеж с одинаковым элементом snd должен находиться в одном списке

group ::  [(Int,Int)] -> [[(Int,Int)]]
group = groupBy (\a b -> snd a == snd b) lijst

A groupBy списка [(1,2),(8,9),(5,2),(9,2),(3,9),(1,1)] должен возвращать [[(1,2),(5,2),(9,2)],[(8,9),(3,9)],[1,1]].

Однако он возвращает [[(1,2)],[(8,9)],[(5,2),(9,2)],[(3,9)],[(1,1)]].

Как я могу заставить эту функцию работать?

1 Ответ

0 голосов
/ 21 октября 2018

При чтении в документации groupBy мы обращаемся к документации group , которая гласит:

Функция group берет список и возвращаетсписок списков такой, что конкатенация результата равна аргументу.

Это не очень очевидный способ сказать: «Мы группируем только равные смежные элементы».

Так что sortBy ваш список первым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...