dual-tree-0.2.0.9: 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
(http://projects.haskell.org/diagrams), 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.