我正在将Huet 的原始论文与Clojure 的实现进行比较,并试图找出做出这些更改的原因。我是 Clojure 新手,所以如果我对 Clojure 代码的解释有误,请纠正我。
在 Huet 的论文中,路径的类型是 (in Ocaml) Top | Node of tree list * path * tree list;;
。在 Clojure 中,有两个附加字段,pnodes
和changed?
. 这些领域的目的是什么?我是否相信l
并r
对应于 Huet 类型中的第一个和第三个条目,那ppath
是第二个?
Huet 的 zipper 始终使用链表(注意我说的是 Loc 类型本身,而不是 zipper 操作的数据结构),而在某些地方,例如l
,Clojure 实现使用向量。为什么要进行更改,以及对 Clojure 实现的时间复杂度有何影响?