しばらく前に、FingerTrees に関する記事(付随する Stack Overflow Questionも参照) に出くわし、そのアイデアをファイルに入れました。私はついにそれらを利用する理由を見つけました。
私の問題は、Data.FingerTree パッケージの端が少し腐っているように見えることです。さらに、データ構造を利用する Containers パッケージのData.Sequenceは、(おそらくより良い) バージョンを再実装しますが、それをエクスポートしません。
この構造は理論的には有用であると思われますが、実際の使用や注目はあまりないようです。実際問題として FingerTree が役に立たないことに人々は気付きましたか、それともこのケースは十分な注意が払われていないのでしょうか?
さらに説明:
優れた連結特性を持つテキストを保持するデータ構造を構築することに興味があります。さまざまなフラグメントから HTML ドキュメントを作成することを考えてみてください。ほとんどのビルド済みソリューションはバイト文字列を使用しますが、Unicode テキストを適切に処理するものが本当に必要です。現時点での私の計画は、Data.Text フラグメントを FingerTree にレイヤー化することです。
(offset,length) 操作を使用してコピーせずにスライスを取得する Data.Vector からのトリックも借りたいと思います。Data.Text.Text にはこれがデータ型に組み込まれていますが、これは効率的な uncons および unsnoc 操作にのみ使用されます。FingerTree では、この情報は非常に簡単にv
ツリーの注釈または注釈になる可能性があります。