gpt4 book ai didi

data-structures - 具有多个游标的 zipper 式数据结构

转载 作者:行者123 更新时间:2023-12-03 11:01:17 24 4
gpt4 key购买 nike

当一个人想要遍历一棵树并保持当前位置时,Zipper 数据结构很棒,但是如果他们想要跟踪一个以上的位置,应该使用什么数据结构呢?

让我用例子来解释:


  • #haskell channel 有人告诉我,yi 编辑器中使用 zipper 来表示
    光标位置。这很棒,但是如果你想要两个怎么办
    游标。就像如果你想代表一个选择,你需要知道开始和
    选择的结束。

  • 在 wikibooks 上的 Minotaur 示例中,他们使用 Zipper 来表示 Minotaur 在迷宫中的位置。如果我想将敌人添加到迷宫中,用 zipper 代表他们的位置同样有意义。

  • 最后一个实际上是从我的迷你项目开始的:作为学习 Haskell 的一部分,我正在尝试使用 cairo 和 gth2hs 可视化树结构。到目前为止一切顺利,但现在我想选择一个或多个节点并能够例如移动它们。因为我不能只使用一个以上的选定节点
    教科书中定义的 zipper 。

  • 有一个简单(幼稚?)的解决方案,类似于他们在 XMonad 早期版本中使用的解决方案,其中涉及有限映射,如 here 所述。 .

    也就是说,例如在我的示例项目中,我会将选定的节点存储在索引映射中,并用索引替换它们在主结构中的表示。但是这种解决方案有很多缺点。就像上面链接中解释的那样,或者说,在我的示例中,取消选择所有节点将需要搜索整个树。

    最佳答案

    奥列格在 "concurrent" zippers via delimited continuations 上的工作是主要引用。

    关于data-structures - 具有多个游标的 zipper 式数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3436559/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com