Есть ли функционал n:1 bimap?
У меня есть карта, где несколько ключей могут отображаться на одно и то же значение. Я хотел бы сделать обратный поиск, чтобы при заданном значении я получил список всех ключей, которые соответствуют этому значению. Обратите внимание, что в отличие от Data.Bimap
моя карта не 1:1, а n: 1.
Кроме того, обратный поиск не должен принимать O(n), как для выполнения всех записей карты, а, скорее, O(log n) или, что лучше, с обратным индексом. Карта будет содержать много десятков тысяч записей с большой загрузкой операций добавления / удаления / поиска.
Доступна ли такая структура данных в функциональной форме (предпочтительнее Хаскелл или Фреге)?