2013-03-21 8 views
7

効率的なランダム挿入と削除を可能にする永続シーケンシャルデータ構造を探しています。 clojure.data.fingerツリーに多くの活動がなかったのでClojureフィンガーツリーとflexvec

:私は、次のような実装を見つけました過去2年間、他のものは比較的新しいものでした。私は誰かが生産においてこれらのどれかを使用しているかどうか、そして私が見落としてしまった代替品があるかどうか疑問に思っていました。

+0

なぜclojureのPersistentVectorは十分ではありませんか?ユースケースの詳細を追加できますか? – ordnungswidrig

+0

@ordnungswidrig、私の使用例に対するあなたの要求に応えて:私は配列として表現された文書を持っています。事象に応答して、文書は、文書内の特定のオフセットで挿入および削除によって更新される。通常は、比較的大きな文書に挿入または削除が1つまたは2つしかありません。 clojureの永続的なベクトル実装では、各イベントでドキュメントを再作成する必要があります。たとえば、フィンガーツリーを使用すると、変更されたオフセットに沿ってドキュメントを分割して結合することができます。 – Inshallah

+0

構造的な共有のため、これは大きなコストを課すべきではありません。または分割された部分にアクセスする必要がありますか?ディスクの永続性を最適化するには? – ordnungswidrig

答えて

1

もう1つの実装clojure/core.rrb-vectorannouncedです。それはclojure githubアカウントにあるので、事実上の実装になるようです。

+2

clojure/core.rrb-vectorは、Michalのflexvecが貢献ライブラリに移動しただけです。 –