Changes the implementation of algebra::transport to use an explicit
stack (a vector) to visit each node in a PolyValue / Operator tree,
and another stack to hold each child node's result.
The goal is to handle trees of any depth, not limited by the size of the
call stack. Putting the explicit stacks in the implementation of
algebra::transport means you can still think recursively when writing a
particular transporter.
Changes the implementation of algebra::transport to use an explicit
stack (a vector) to visit each node in a PolyValue / Operator tree,
and another stack to hold each child node's result.
The goal is to handle trees of any depth, not limited by the size of the
call stack. Putting the explicit stacks in the implementation of
algebra::transport means you can still think recursively when writing a
particular transporter.