SuperAPI AI 工具集

tree-zipper

编程与开发

查看项目

更新于 10-15 23:46

技能介绍

用途:在不可变树上提供 zipper 光标,用于树遍历、以函数式方式编辑树结构、跟踪焦点位置。

状态模型:状态 =(focus, trail)。focus 是当前子树;trail 是描述从根到 focus 路径的“面包屑”列表。每个 crumb 记录父节点的值以及未被选中的兄弟节点。核心不变式:始终可以从(focus, trail)重建完整的原始树。

主要操作:down_left、down_right 会压入一个 crumb,并将所选子节点设为新 focus;up 弹出顶部 crumb,重建父节点,并把该父节点设为新 focus;set_value 替换当前 focus 子树的值;to_tree 一路向上重建整棵树。

使用要点:两个 zipper 相等应比较完全重建后的树是否相等,而不是比较原始的(focus, trail)对;切勿直接比较原始(focus, trail)对判断相等。

示例:z.down_left() 压入一个 crumb(父节点值与右侧兄弟),focus 设为左子节点;z.up() 弹出 crumb 并重建父节点;z.to_tree() 一路向上重建。比较 zipper 用 to_tree() 的相等性,绝不用原始(focus, trail)。

限制:资料未提供具体编程语言、安装命令、平台与收费信息;相关细节暂未提供。