Summary of exported operations:

children
:: (a -> ([b],[b] -> a)) -> a -> [b]
Yields the children of a value.

replaceChildren
:: (a -> ([b],[b] -> a)) -> a -> [b] -> a
Replaces the children of a value.

mapChildren
:: (a -> ([b],[b] -> a)) -> (b -> b) -> a -> a
Applies the given function to each child of a value.

family
:: (a -> ([a],[a] -> a)) -> a -> [a]
Computes a list of the given value, its children, those children, etc.

childFamilies
:: (a -> ([b],[b] -> a)) -> (b -> ([b],[b] -> b)) -> a -> [b]
Computes a list of family members of the children of a value.

mapFamily
:: (a -> ([a],[a] -> a)) -> (a -> a) -> a -> a
Applies the given function to each member of the family of a value.

mapChildFamilies
:: (a -> ([b],[b] -> a)) -> (b -> ([b],[b] -> b)) -> (b -> b) -> a -> a
Applies the given function to each member of the families of the children
of a value.

evalFamily
:: (a -> ([a],[a] -> a)) -> (a -> Maybe a) -> a -> a
Applies the given function to each member of the family of a value
as long as possible.

evalChildFamilies
:: (a -> ([b],[b] -> a)) -> (b -> ([b],[b] -> b)) -> (b -> Maybe b) -> a -> a
Applies the given function to each member of the families of the children
of a value as long as possible.