複数のキーを同じ値にマップできるマップがあります。値を指定すると、この値にマップされるすべてのキーのリストを取得できるように、逆ルックアップを実行したいと思います。私のマップとは異なり
Data.Bimap
、1:1 ではなくn :1 であることに注意してください。
また、逆引きは、すべてのマップ エントリを実行する場合のようにO(n)を使用するのではなく、O(log n)または逆引きインデックスの場合のように使用する必要があります。マップには、追加/削除/検索操作の負荷が高い、何万ものエントリが含まれます。
そのようなデータ構造は関数形式で利用できますか (Haskell または Frege が推奨されます)?