SICP演習問題4.4
評価器のprimitive-proceduresにandとorを追加するのを忘れずに.
;;exercise4.4 (define (and? exp) (tagged-list? exp 'and)) (define (or? exp) (tagged-list? exp 'or)) (define (eval-and exps env) (if (null? exps) #f (let eval-and-loop ((exps (cdr exps))) (if (null? exps) #t (cond [(true? (eval (car exps) env)) (eval-and-loop (cdr exps))] [else #f]))))) (define (eval-or exps env) (let eval-or-loop ((exps (cdr exps))) (if (null? exps) #f (if (true? (eval (car exps) env)) #t (eval-or-loop (cdr exps))))))