(load "util.scm") (load "misc/sicp-regsim.scm") (load "misc/sicp-eceval.scm") (define the-global-environment (setup-environment)) (set-register-contents! eceval 'exp '(if false 1 2)) (start eceval) (assert (get-register-contents eceval 'val) 2) (display "\nex-5.23 - derived-expressions\n") (set-register-contents! eceval 'exp '(cond ((= 1 2) 0) ((= 2 3) 1) ((= 0 4) 2) (else 3))) (start eceval) (assert (get-register-contents eceval 'val) 3) (set-register-contents! eceval 'exp '(begin (define (square x) (* x x)) (let ((y (square 3))) y))) (start eceval) (assert (get-register-contents eceval 'val) 9) (display "\nex-5.24 - cond-special-form\n") (set-register-contents! eceval 'exp '(cond ((= 2 1) 0) ((= 2 3) 1) ((= 0 4) 2) (else (* 2 5)))) (start eceval) (assert (get-register-contents eceval 'val) 10) (display "\nex-5.25 - lazy-evaluation\n") (set-register-contents! eceval 'exp '(begin (define (try a b) (if (= a 0) 1 b)) (try 0 (/ 1 1)))) (start eceval) (assert (get-register-contents eceval 'val) 1) (display "\nex-5.26\n")