meta-circularity
this interpreter is
- a scheme interpreter
- written in scheme!
can be viewed as
- a semantics: we can read to understand how scheme evaluates expressions
figure out where these features are evident in the code
- applicative order evaluation: all the arguments of a procedure are evaluated before the call
- lexical scoping
- shadowing of variables