Rebuild a tree from the given set of identifiers, variables, subexpressions and types
Rebuild a tree from the given set of identifiers, variables, subexpressions and types
Extracted subtrees from a tree as well as a "builder"
Extracted subtrees from a tree as well as a "builder"
Extracted subtrees from a flag as well as a "builder"
Extracted subtrees from a flag as well as a "builder"
Rebuild a flag from the given set of identifiers, expressions and types
Rebuild a flag from the given set of identifiers, expressions and types
Meat and bones of tree deconstruction/reconstruction.
Implementations provide methods to extract all useful subtrees from a given tree (Expressions.Expr, Types.Type, ...) as well as a closure that can reconstruct the initial tree based on appropriate arguments.
Instances of Trees must provide a TreeDeconstructor as a means of applying generic transformations to arbitrary extensions of the Trees.Tree interface.
Deconstructors for some interesting use cases