scalaz.Tree
次のようなRose Treeデータ構造が必要です。
case class Tree[A](root: A, children: Stream[Tree[A]])
ただし、ノードを追加するための関数を作成する方法を理解するのに苦労しています。一般に、ノードを追加するにはツリーを再構築する必要があり、不変のデータ構造でそれを行うには再帰関数が必要であることは理解していますが、すべてをまとめることができていません。Scala: Tree Insert Tail Recursion With Complex Structureを見ましたが、これには二分木が含まれているため、多方向木に実装する方法がよくわかりませんでした。
伝統的に、これは Array などを使用して変更可能に実装します。機能的なデータ構造をより理解するために読むべき本やリソースはありますか? または、私が読むことをお勧めできるサンプルコードはありますか?