Below is a sequence of expression. What is the result printed by the interpreter in response to each expression? Assume that the sequence is to be evaluated in the order in which it is presented
10
10
(+ 5 3 4)
12
(- 9 1)
8
(/ 6 2)
3
(+ (* 2 4) (- 4 6))
6
(define a 3)
The interpreter doesn't print anything, but registers a as 3 in the global environment
(define b (+ a 1))
The interpreter doesn't print anything, but register b as 4 in the global environment
( + a b (* a b))
19
(if (and (> b a) (< b (* a b)))
b
a)
4, the interpreter evaluates (> b a)
which gives true, and it evaluates (< b (* a b))
which also gives true, the if condition returns true, so interpreter returns b which is 4
(cond ((= a 4) 6)
((= b 4) (+ 6 7 a))
(else 25))
16, interpreter evaluates the first predicate (= a 4)
, which is false as a is 3, it goes to the next predicate (= b 4)
which is true. It returns the action from that condition (+ 6 7 a)
which is 16
(+ 2 (if (> b a) b a))
6
(* (cond ((> a b) a)
((< a b) b)
(else -1))
(+ a 1))
16, the cond evaluates to 4, 4 * 4 = 16