A tiny tiny tree module. Only a few utility methods are provided here - after all, if you want to manupilate the tree, you should probably do so using the interface 🤓.
Recursive tree structure, holding any data type node
, and any number of child nodes. Creating a tree of strings, for instance, would look like this:
decoder : Json.Decode.Decoder node -> Json.Decode.Decoder (Tree node)
Decode a tree based on the decoder of its node
encoder : (node -> Json.Encode.Value) -> Tree node -> Json.Encode.Value
Encodes a tree based on the encoder of its node
depth : Tree node -> Basics.Int
Tree depth.
flatten : Tree a -> List ( List Basics.Int, a )
Flatten a tree into a list of ( path, node ) tuples. The path is a list of integers showing how you can get to the node (the root would be []
, its first child [ 1 ]
).
map : (a -> b) -> Tree a -> Tree b
Map over the nodes of the tree.