我需要一个类似scalaz.Tree
或以下的玫瑰树数据结构:
case class Tree[A](root: A, children: Stream[Tree[A]])
但是我很难理解如何编写附加节点的函数。一般来说,我知道附加一个节点涉及重建树,并且使用不可变数据结构执行此操作需要递归函数,但我无法将它们放在一起。我确实看到了Scala: Tree Insert Tail Recursion With Complex Structure,但由于它涉及二叉树,我不太了解如何为多路树实现它。
传统上,我会使用 Array 等可变地实现这一点。是否有一些我应该阅读的书或资源来更多地理解函数式数据结构?或者是否有一些示例代码可以推荐给我阅读?