Учитывая определенный порядок ключей, как я могу отсортировать мультимап (список кортежей с дубликатными ключами) относительно этого списка, где порядок дубликатов элементов не имеет значения?Сортировка мультимапа относительно другого списка?
Я ищу функцию со следующей подписью
sortByList :: [(a,b)] -> [a] -> [(a,b)]
таким образом, что, например,
a = [(1,'a'), (2, 'b'), (102, 'c'), (2, 'z')]
b = [2,102,1]
sortByList a b -- [(2,'b'), (2,'z'), (102, 'c'), (1, 'a')]
-- or [(2,'z'), (2,'b'), (102, 'c'), (1, 'a')]
-- (order in duplicate keys irrelevant)
У меня есть некоторые идеи, как реализовать это, но все они кажутся уродливыми и громоздким (с использованием lookup
и повторным нахождением и удалением по данной мультимаре).