Code Review
Compare your solutions
#| BEGIN (Write your solution here) |#
(define (eval-or exp env)
(define (eval-clauses clauses)
(if (null? clauses)
#f
(let ((first (eval (first-exp clauses) env)))
(if (true? first)
first
(eval-clauses (rest-exps clauses))))))
(eval-clauses (or-clauses exp)))
(define (eval-and exp env)
(define (eval-clauses clauses)
(if (null? clauses)
#t
(let ((first (eval (first-exp clauses) env)))
(if (false? first)
#f
(if (last-exp? clauses)
first
(eval-clauses (rest-exps clauses)))))))
(eval-clauses (and-clauses exp)))
(define (false? x)
(eq? x #f))
(define (or? exp) (tagged-list? exp 'or))
(define (and? exp) (tagged-list? exp 'and))
(define (or-clauses exp) (cdr exp))
(define (and-clauses exp) (cdr exp))
#| END |#