Type Checker : will take an untyped Expr and turn it into a typed TExpr, resolving identifiers and ensuring type safety.
Evaluator : will substitute some variables (usually constants) by their runtime value and will evaluate and reduce the expression, unroll loops, etc.