不久前,我看到一篇关于 FingerTrees 的文章(另请参阅随附的 Stack Overflow Question)并将这个想法归档。我终于找到了使用它们的理由。
我的问题是Data.FingerTree 包的边缘似乎有点腐烂。此外,使用数据结构的 Containers 包中的Data.Sequence重新实现了一个(可能更好的)版本,但不导出它。
尽管这种结构在理论上看起来很有用,但它似乎并没有得到很多实际使用或关注。有没有人发现FingerTrees作为一个实际的东西没有用,或者这是一个不够重视的案例?
进一步解释:
我有兴趣构建一个包含具有良好连接属性的文本的数据结构。考虑从各种片段构建 HTML 文档。大多数预构建的解决方案都使用字节串,但我真的想要一些能正确处理 Unicode 文本的东西。我目前的计划是将 Data.Text 片段分层到 FingerTree 中。
我还想借用 Data.Vector 的技巧,即在不使用 (offset,length) 操作进行复制的情况下获取切片。Data.Text.Text 已将此内置到数据类型中,但仅将其用于有效的 uncons 和 unsnoc 操作。在 FingerTree 中,此信息很容易成为v
树的注释或注释。