X-Git-Url: https://git.rkrishnan.org/?a=blobdiff_plain;f=src%2Fsicp%2Fmetacircular2.rkt;fp=src%2Fsicp%2Fmetacircular2.rkt;h=ef387d444483742257056a6c6e12afd5ca60587f;hb=f225ca5e374ba315b4fefb9d24174cb942c59036;hp=c45a5e71c24730a6350ce60ae7fecabbf62adb60;hpb=8d49e7ae3465fb5c51b446671b2a109e9c405122;p=sicp.git diff --git a/src/sicp/metacircular2.rkt b/src/sicp/metacircular2.rkt index c45a5e7..ef387d4 100644 --- a/src/sicp/metacircular2.rkt +++ b/src/sicp/metacircular2.rkt @@ -227,6 +227,7 @@ [`(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)]