Recap (substitution rules so far!)
- Apply functions when all arguments are values
- When given a choice, evaluate the leftmost expression first
- (f v1…vn) ⇒ v when f is built-in
- (f v1…vn) ⇒ exp’ when (define (f x1…xn) exp) occurs to the left
- id ⇒ val when (define id val) occurs to the left
- (cond [false exp] …) ⇒ (cond …)
- (cond [true exp] …) ⇒ exp
- (cond [else exp]) ⇒ exp
- (and false …) ⇒ false
- (and true …) ⇒ (and …)
- (and) ⇒ true
- (or true …) ⇒ true
- (or false …) ⇒ (or …)
- (or) ⇒ false