如何迭代 Scalaz 中的树

How to iterate over a Tree in Scalaz

Scalaz 树 class 通过 TreeLoc (Javadoc).

证明了看似非常有用的“拉链”功能

但是,我不清楚如何轻松地遍历树(例如,在包含总共 n>k 个节点的树中找到“k-th”节点)而不做很多条件对冲拉链是否在当前children.

列表的末尾

有没有我缺少的简单方法?

TreeLoc.find 方法中窃取,你可以这样做:

  def findAt[A](tree: TreeLoc[A], k: Int): Option[TreeLoc[A]] = {
    Cobind[TreeLoc].cojoin(tree).tree.flatten.drop(k).headOption
  }