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