*(3,add1(*(5,x))) > (define run (lambda (x) (eval-program (parse-program x)))) > (run '5) 5 > (run '(add1 2)) 3 > (define read-eval-print (lambda () (begin (display "--> ") (write (eval-program (parse-program (read)))) (newline) (read-eval-print)))) > (read-eval-print) --> 5 5 --> (add1 2) 3 --> (+ (add1 2) (- 6 4)) 5 let x = 1 in let x = + (x,2) in add1(x) let makemult = proc (maker, x) if x then +(4,(maker maker -(x,1))) else 0 in let times4 = proc (x) (makemult makemult x) in (times4 3) 12 let g = let count = 0 in proc () let d = set count = add1(count) in count in +((g),(g))