What is an interpreter, compiler? ;; interpreter : exp -> value ;; compiler : exp[scheme] -> exp[low-level language] If we also add lists of definitions, we need ;; interpreter : exp list-of-defs -> value
Implement the Scheme evaluator Add cond0 to the interpreted expression language: exp = (cond0 (exp exp) (else exp)) (cond0 (0 exp1) (else exp2)) = exp1 (cond0 (n exp1) (else exp2)) = exp2 if n is not 0