This module defines commonly-used transformation utilities for the AST exported by SATIrE. It represents an more flexible alternative to the transformation interface provided by module ast_transform.
How to move around a tree and replace subtrees=branches?
At each node, we cut out a branch and replace it with a free variable <Gap>. The original branch is given as a separate argument, allowing us to bind the new branch to <Gap>.
In a way, this works just like Huet's zipper!