dual-tree-0.2.3.1: Rose trees with cached and accumulating monoidal annotations

# dual-tree-0.2.3.1: Rose trees with cached and accumulating monoidal annotations

Rose (n-ary) trees with both upwards- (i.e. cached) and downwards-traveling (i.e. accumulating) monoidal annotations. This is used as the core data structure underlying the `diagrams` framework (https://diagrams.github.io), but potentially has other applications as well.

Abstractly, a DUALTree is a rose (n-ary) tree with data (of type `l`) at leaves, data (of type `a`) at internal nodes, and two types of monoidal annotations, one (of type `u`) travelling "up" the tree and one (of type `d`) traveling "down".

See Data.Tree.DUAL for full documentation. Data.Tree.DUAL provides a public API which should suffice for most purposes. Data.Tree.DUAL.Internal exports more of the internal implementation---use it at your own risk.

Modules

dual-tree-0.2.3.1

- Data
  Submodules
  - Tree
    Submodules
    - Data.Tree.DUAL
      Submodules
      - Data.Tree.DUAL.Internal