Visitor example: a compiler
Consider a compiler that represents a
program as an abstract syntax tree
Need to perform operations on the AST
type checking
optimization
code generation