Specialization
The interpreter can be specialized for a given input expression, which has the effect of compiling that expression.
>(topinterp '(+ (* 3 4) 5))
17
>(specialize 'topinterp
'('(+ (* a b) c))
'expr1 '(a b c))
>(pp expr1)
(LAMBDA-BLOCK EXPR1 (A B C)
(PROGN
(PUSH A *STACK*)
(PUSH B *STACK*)
(TIMES)
(PUSH C *STACK*)
(PLUS)
(POP *STACK*)))
>(expr1 3 4 5)
17