以下のAlexTaggartの発言の後に編集されました。
私はジッパーを使用して、何千ものノードに成長する可能性のあるツリーを簡単にトラバースして編集しています。各ノードは、最初に作成された時点では不完全です。データは常にランダムな位置で追加/削除され、リーフノードはブランチに置き換えられます。
ツリーは非常に不均衡になる可能性があります。ノードへの高速ランダムアクセスも重要です。
実装は、ジッパーを使用してツリーをトラバースし、キーでインデックス付けされたノードのハッシュテーブルを作成することです。言うまでもなく、上記は次のように非常に非効率的です。
- 各ノードの2つのコピーを作成する必要があります
- 変更は、2つのデータ構造(ツリーとハッシュマップ)間で一貫してミラーリングする必要があります。
要するに、トラバース/更新の容易さと、clojureのハッシュテーブルへの高速アクセスを組み合わせるための時間/スペース効率の良い方法はありますか?