当想要遍历树并保持当前位置时,Zipper数据结构很棒,但是如果想要跟踪多个位置,应该使用哪种数据结构?
让我用例子来解释:
有一个简单的(天真的?)解决方案,类似于他们在早期版本的XMonad中使用的解决方案,它涉及有限地图,如here所述。
即,例如在我的示例项目的情况下,我将所选节点存储在索引映射中,并用索引替换它们在主结构中的表示。但是这种解决方案有很多缺点。就像上面链接中解释的那样,或者说,在我的例子的情况下,取消选择所有节点将需要搜索整个树。
答案 0 :(得分:13)
Oleg在"concurrent" zippers via delimited continuations上的工作是主要参考。
答案 1 :(得分:10)
见this paper 。我似乎记得在某处读到二阶导数有两个洞,这可能是你想要的。