Некоторое время назад я наткнулся на статью о FingerTrees (см. также сопровождающий стек Вопрос переполнения) и подал идею. Я наконец нашел причину, чтобы использовать их.
Моя проблема заключается в том, что Data.FingerTree пакет, кажется, немного гниет по краям. Кроме того, Data.Sequence в пакете Containers, который использует структуру данных повторно реализует (возможно, лучшую) версию, но не экспортирует ее.
Как теоретически полезно, как кажется, эта структура кажется, она, кажется, не получает много фактического использования или внимания. Обнаружили ли люди, что FingerTrees не полезны в практическом плане или это недостаточно для внимания?
дальнейшее объяснение:
Я заинтересован в создании структуры структуры данных, содержащей хорошие свойства конкатенации. Подумайте о создании HTML-документа из различных фрагментов. Большинство готовых решений используют bytestrings, но я действительно хочу что-то, что имеет дело с текстом Unicode должным образом. Мой план на данный момент состоит в том, чтобы сложить фрагменты Data.Text в FingerTree.
Я также хотел бы заимствовать трюк из Data.Vector для приема фрагментов без копирования с использованием (смещения, длины) манипуляции. Data.Text.Text имеет этот встроенный тип данных, но использует его только для эффективных операций uncons и unsnoc. В FingerTree эта информация может очень легко стать v
или аннотацией дерева.