allo-media/canopy

A Generic Tree API.


Keywords
elm, rosetree, tree
Install
elm-package install allo-media/canopy 1.0.0

Documentation

Canopy

A Generic Tree API, based on the Rose Tree algebraic data type, augmented with helpers for building, querying and manipulating nodes.

Building a tree is basically done with using node and leaf:

tree : Node String
tree =
    node "root"
        [ node "foo"
            [ leaf "bar" ]
        , node "baz"
            [ leaf "qux" ]
        ]

The API focuses on node values for common operations:

tree
    |> remove "baz"
    |> append "foo" "bingo"
    == node "root"
        [ node "foo"
            [ leaf "bar"
            , leaf "bingo"
            ]
        ]

It exposes powerful helpers for working with tree data structures:

node 1
    [ node 2
        [ leaf 3, leaf 4 ]
    , node 5
        [ leaf 6 ]
    ]
    |> flatMap (value >> (*) 2)
    |> List.sum
    == 42

License

MIT.