Removing the need to maintain a list of visited expressions by
requiring traversal functions to invoke the visitor function themselves
for the root nodee