Implement 5.30; on to last section; let's go!

This commit is contained in:
2021-04-11 13:50:56 -04:00
parent 59b58cfb9a
commit f60931f80e
3 changed files with 67 additions and 10 deletions

View File

@@ -158,14 +158,38 @@
(display "\nex-5.30 - error-handling\n")
; a
(set-register-contents! eceval 'exp
'(begin
(define (foo x) x)
(foo a)))
(start eceval)
(newline)
(assert (get-register-contents eceval 'val) 'unbound-variable-error))
(assert (get-register-contents eceval 'val) 'error-unbound-variable))
; b
(define (check-apply-division args)
(cond
((not (= (length args) 2)) 'error-div-wrong-number-of-args)
((= (cadr args) 0) 'error-div-by-zero)
(else 'ok)))
(set-register-contents! eceval 'exp
'(begin
(/ 1 0)))
(start eceval)
(newline)
(assert (get-register-contents eceval 'val) 'error-div-by-zero)
;; CONTINUE HERE
(define (check-apply-car args)
(cond
((not (pair? (car args))) 'error-car-no-pair)
(else 'ok)))
(set-register-contents! eceval 'exp
'(begin
(car 3)))
(start eceval)
(newline)
(assert (get-register-contents eceval 'val) 'error-car-no-pair)