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