Scalaz Tree类通过TreeLoc (Javadoc)证明了看似非常有用的“Zipper”功能。
然而,对我来说,如何轻松地遍历树(例如,在包含总共n个> k个节点的树中找到“第k个”节点)并不明显,而无需对是否进行大量条件对冲拉链位于当前孩子列表的末尾。
有没有一种简单的方法可以做到这一点,我错过了?
答案 0 :(得分:3)
从TreeLoc.find
方法窃取,您可以执行以下操作:
def findAt[A](tree: TreeLoc[A], k: Int): Option[TreeLoc[A]] = {
Cobind[TreeLoc].cojoin(tree).tree.flatten.drop(k).headOption
}