効率的なインデックス付き永続データ構造を探しています。私は通常.NETで作業し、FSharpのマップを認識していますが、その実装と私が認識している他のほとんどは、マッピングの左側である単一の「インデックス」のみを提供しています。
基本的にシナリオはこちら
public class MyObject
public int Id { get; }
public int GroupId { get; }
public string Name { get; }
オブジェクトの Id は、追加されたアイテムのグローバルに一意のセットになります。GroupId の値が重複している可能性があります。一致する GroupId を持つすべての値を照会できるようにしたいと考えています。GroupId 内の名前は一意ですが、異なる GroupId 間で重複する可能性があります。これは、特定のフィールド値に基づいてアイテムのグループに個別にアクセスする必要があるため、3 つのフィールドの複合キーを単純に作成できる状況ではありません。
私はこれを行うことができ、過去に、STackoverflowの他の投稿で推奨されている辞書の辞書を使用していました...ただし、データ構造も1)完全に永続的であり、2)効率的であることを望んでいますメモリ内 - バージョンはできるだけ多くのノードを共有する必要があることを意味します 3) 変更が効率的 - 高速にしたい
ここでかなりのことを求めていることは承知していますが、車輪の再発明がすでに行われている場合は、それを再発明しようとさえしないようにお願いしたかったのです。
ありがとう