Executes an implementation of
Visitor in constant stack space.
This function will visit every node in the given
Ast while calling the
appropriate methods provided by the
The primary use case for this method is when one wants to perform case
analysis over an
Ast without using a stack size proportional to the depth
Ast. Namely, this method will instead use constant stack size, but
will use heap space proportional to the size of the
Ast. This may be
desirable in cases where the size of
Ast is proportional to end user
If the visitor returns an error at any point, then visiting is stopped and the error is returned.