Data.Text против веревки

Я искал канаты в качестве альтернативы Data.Text, и мне нравится то, что я вижу так сильно, что теперь я вынужден задать этот вопрос... Есть ли какой-нибудь случай, когда Data.Text будет лучший выбор?

Вот те моменты, которые приводят меня к этому (исправьте меня, если я ошибаюсь ни на одном из них) -

  • Однослойная веревка node внутренне (почти) та же самая вещь, что и объект Data.Text. Накладные расходы в одной веревке node против текста незначительны, всего лишь один бит, чтобы различать ветвь или лист. Если вы действительно хотите Data.Text, просто используйте неразветвленную веревку.

  • Сложность универсальна или лучше в канатах-insert/delete (log (N) vs N), получить по индексу (log (N)/N в зависимости от глубины дерева против N).

  • Я читал, что успех веревок оказался смешанной сумкой в ​​c, потому что производительность была повреждена кодом безопасности нитей. Однако эти проблемы не должны иметь значения в неизменном Haskell. На самом деле мне показалось, что из-за этого Haskell и канаты идеально подходят друг для друга.

Опять же, как и в моих предыдущих подобных вопросах, меня больше интересуют абстрактные качества структур, а не текущая ситуация (использование библиотеки, как усиленный код и т.д.). Если вы завтра переписываете библиотеки Haskell, замените ли вы Data.Rope на Data.Text?

Ответы

Ответ 1

"Палец дерева упакованных массивов" кажется хорошим выбором для представления, хотя я бы беспокоился о постоянных накладных расходах. Некоторые усилия с агрессивной потоковой фьюссией и некоторыми другими оптимизациями для коротких строк могут это исправить, но Data.Rope не хватает этих функций. Прямо сейчас Data.Rope на самом деле не является Data.Text replacmenet.

  • Он в основном реализует строки байтов, а не строки charachters - он заменяет byteString не текст. Поддержка Unicode важна.
  • Несмотря на удивительность Эдварда, веревка не так зрелая. Он не внес каких-либо взносов в год и редко используется.
  • Data.Text имеет огромные инженерные усилия, высоко оптимизирован и хорошо известен и хорошо документирован.

Ответ 2

Давным-давно, когда я попытался использовать Rope, автор сказал мне, что он еще не используется, это был просто эксперимент. Одной из проблем с Hackage является трудность изучения того, какой пакет/версии действительно готово к производству.

Является ли Rope как Unicode-совместимым как Data.Text?