- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
前段时间,我遇到了an article on FingerTrees (另见 an accompanying Stack Overflow Question )并将这个想法归档。我终于找到了使用它们的理由。
我的问题是 Data.FingerTree package似乎边缘有点腐烂。此外,Data.Sequence在使用数据结构 re-implements 的 Containers 包中一个(可能更好的)版本,但不导出它。
尽管这种结构在理论上看起来很有用,但它似乎并没有得到很多实际使用或关注。有没有人发现FingerTrees作为一个实际的东西没有用,或者这是一个不够重视的案例?
进一步解释 :
我有兴趣构建一个包含具有良好连接属性的文本的数据结构。考虑从各种片段构建 HTML 文档。大多数预构建的解决方案都使用字节串,但我真的想要一些能正确处理 Unicode 文本的东西。我目前的计划是将 Data.Text 片段分层到 FingerTree 中。
我还想借用 Data.Vector 的技巧,即在不使用 (offset,length) 操作进行复制的情况下获取切片。 Data.Text.Text 已将此内置到数据类型中,但仅将其用于有效的 uncons 和 unsnoc 操作。在 FingerTree 中,此信息很容易变成 v
或树的注释。
最佳答案
要特别回答您关于手指树的问题,我认为问题在于它们与数组相比具有相对较高的恒定成本,并且比实现有效连接的其他方法更复杂。一个 Builder 有一个更有效的界面来附加 block ,它们通常很容易获得(参见@informatikr 答案中的链接)。假设 Data.Text.Lazy
用 block 的链表实现,你正在创建一个 Data.Text.Lazy
来自建筑商。除非您有很多 block (可能超过 50 个),或者重复访问列表末尾附近的数据,否则手指树的高固定成本可能不值得。Data.Sequence
出于性能原因,实现是专门的,不如fingertree
提供的完整接口(interface)通用。包裹。这就是它不被导出的原因;除了 Sequence
之外,它实际上不可能用于任何其他用途。 .
我还怀疑许多程序员对于如何实际使用 monoidal 注释不知所措,因为它存在相当大的抽象障碍。很多人不会使用它,因为他们看不到它与其他数据类型相比有何用处。
直到我在 word numbers 上阅读了 Chung-jieh Shan 的博客系列时才真正明白。 (part2、part3、part4)。这证明了这个想法绝对可以在实际代码中使用。
在您的情况下,如果您需要检查部分结果并进行有效的附加,则使用手指树可能比构建器更好。根据构建器的实现,您最终可能会在转换为 Text
时进行大量重复工作。 ,向构建器添加更多内容,转换为 Text
再等等。不过,这取决于您的使用模式。
您可能对我的 splaytree 感兴趣包,它提供了带有单曲面注释的展开树,并在它们之上构建了几种不同的结构。除了展开树本身,Set
和 RangeSet
模块具有或多或少完整的 API,Sequence
模块主要是我用于测试的骨架。它不是您正在寻找的“包含电池”的解决方案(同样,@informatikr 的答案提供了这些),但如果您想尝试使用单曲面注释,它可能比 Data.FingerTree
更有用.请注意,如果您按顺序遍历所有元素(或连续 snoc 到末尾或类似),则展开树可能会变得不平衡,但如果追加和查找交错,则性能可能会非常好。
关于haskell - 为什么 FingerTrees 的使用不足以实现稳定的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11151732/
如果输入稳定,我想触发 AJAX 请求(以便不在每个新字符后发送请求)。我尝试了以下方法: $('#input').keyup(function(){ // Get the value when
我读到,我们可以插入以将选择排序更改为稳定排序,而不是交换。我在网上得到了以下相同的实现。 void selection ( int a[], int n ) { while ( --n >
我正在尝试创建一个非常节省空间的不寻常的关联数组实现,我需要一个满足以下所有条件的排序算法: 稳定(不改变具有等键的元素的相对顺序。) 就地或几乎就地(O(log n) 堆栈很好,但没有 O(n) 空
我有一个节点的无线网状网络,每个节点都能够向其邻居报告其“距离”,以(简化的)信号强度来衡量。节点在地理上位于 3d 空间中,但由于 radio 干扰,节点之间的距离不需要在三角(三角?)上一致。即,
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在实现一个玩具调度程序,它读取进程规范(例如到达时间、总运行时间)的输入文件,然后根据随机 io/cpu 突发调度进程。 文件格式 Arrival time, total CPU time, CP
我正在使用 JRedis 的同步实现,但我打算切换到异步方式与 Redis 服务器通信。 但在此之前我想问一下社区 JRedisFuture 是否实现了 alphazero 的 jredis对于生产使
我们正在为我们的公司构建一个RESTful API,它将提供XML,JSON和可能的其他内容类型。 我的团队正在寻找一个框架(按优先顺序排列): 有据可查 理想的情况下,它具有出色的教程以及繁荣的社区
我的网站希望用户上传他们的照片...但我该如何保护我们的服务器免受伤害?只允许 JPG 应该可以避免病毒问题,但如果有人选择 10Gb 文件怎么办 - 这会减慢整个网站的速度吗? 我们使用的是经典 A
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 8 个月前关闭。 Improve this ques
据我所知,paintEvent() 是在 QApplication 对象的“主循环”中执行的,并且可以为其内部系统任务花费时间,从而延迟执行排队槽或其他事件。 但是,如果我需要播放非常流畅的动画并且我
我想对随机排序的 ActiveRecord 模型列表(来自 MySQL 数据库的行)进行分页。 但是,这种随机化需要在每个 session 的基础上持续存在,以便访问该网站的其他人也会收到一个随机的、
在 Flutter Web 稳定后,我尝试按照文档中给出的说明将我的 Flutter Mobile 应用程序转换为 Flutter Web。一切都很好,但这里的问题是 Web 上的文本不可选择!我刚刚
我正在尝试制作一个包含 Nginx stable 最新使用 vts 模块编译的 dockerfile .... 我遇到了一个大问题,当我放入将下载的 docker 文件时我找不到一些汽车链接安装最新的
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我正在使用以下命令将 Airflow 部署到 Kubernetes 中:https://github.com/helm/charts/tree/master/stable/airflow 我正在尝
我已经安装了本地测试elasticsearch和logstash,它们似乎看不到本地es-知道在集群/ ns中如何看到es吗? helm repo add elastic https://helm.e
我最近加入了一家公司,担任发布工程师,在这里,大量的开发团队以各种语言开发了众多服务,应用程序和Web应用程序,它们之间具有各种相互依赖性。 我正在尝试找到一种简化并最好自动发布的方法。当前,发布团队
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我想知道一种在 Windows 上使用简单批处理和 ffmpeg 稳定 goPro 视频的简单方法。 最佳答案 1) 在您的计算机上安装 ffmpeg:按照 steps 安装 2) 在您要处理的视频旁
我是一名优秀的程序员,十分优秀!