Qualche tempo fa, ho incontrato an article on FingerTrees (Vedi anche an accompanying Stack Overflow Question) e ho archiviato l'idea. Ho finalmente trovato una ragione per farne uso.Perché i FingerTrees non sono sufficientemente utilizzati per avere un'implementazione stabile?
Il mio problema è che il Data.FingerTree package sembra avere un po 'di marcatura attorno ai bordi. Inoltre, Data.Sequence nel pacchetto Containers che utilizza la struttura dati re-implements una versione (possibilmente migliore), ma non la esporta.
Come teoricamente utile come sembra essere questa struttura, non sembra avere molto uso o attenzione. Le persone hanno scoperto che i FingerTrees non sono utili come questione pratica, o che questo non è un caso sufficiente?
ulteriori spiegazioni:
Sono interessato a costruire un testo che tiene struttura dati che ha buone proprietà di concatenazione. Pensa a costruire un documento HTML da vari frammenti. La maggior parte delle soluzioni pre-costruite usano gli effetti di estrapolazione, ma voglio davvero qualcosa che si occupi correttamente del testo Unicode. Il mio piano al momento è quello di stratificare i frammenti Data.Text in un FingerTree.
Vorrei anche prendere in prestito il trucco da Data.Vector di prendere le fette senza copiare usando (offset, lunghezza) la manipolazione. Data.Text.Text ha questo incorporato nel tipo di dati, ma lo usa solo per efficienti uncons e unsnoc opperations. In FingerTree questa informazione potrebbe facilmente diventare il v
o l'annotazione dell'albero.
Perché non utilizzare Data.Text.Lazy.Text? – dave4420
La maggior parte delle persone non ha bisogno di interfacciarsi con la struttura dell'albero delle dita stessa; hanno solo bisogno di ciò che ottengono da 'Data.Sequence'. Pochissime persone incontrano effettivamente un caso in cui hanno bisogno di utilizzare direttamente la struttura dei dati. –