]> git.rkrishnan.org Git - sicp.git/blobdiff - src/sicp/metacircular2.rkt
solution to 4.26
[sicp.git] / src / sicp / metacircular2.rkt
index c45a5e71c24730a6350ce60ae7fecabbf62adb60..ef387d444483742257056a6c6e12afd5ca60587f 100644 (file)
     [`(define ,(? (lambda (x) (not (pair? x))) var) ,b) (define-variable! var (eval b env) env)]
     [`(define ,(? pair? var) ,b ..1) (define-variable! (car var) (eval (make-lambda (cdr var) b) env) env)]
     [`(if ,pred ,consequent ,alternative) (if (true? (eval pred env)) (eval consequent env) (eval alternative env))]
+    [`(unless ,condition ,consequent ,alternative) (if (true? (eval condition env)) (eval alternative env) (eval consequent env))]
     [`(lambda ,parameters ,body ..1) (make-procedure parameters body env)]
     [`(begin ,exp ...) (eval-sequence exp env)]
     [`(cond ,clauses ...) (eval (cond->if clauses) env)]