Я искал канаты в качестве альтернативы 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?