Skip to content

Latest commit

 

History

History
67 lines (47 loc) · 1.23 KB

1.md

File metadata and controls

67 lines (47 loc) · 1.23 KB

Exercise 1.1

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