Exercise

Below is a sequence of expressions. 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.

Student Response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
10                  ; 10
(+ 5 3 4)           ; 12
(- 9 1)             ; 8
(/ 6 2)             ; 3
(+ (* 2 4) (- 4 6))
(define a 3)        ; a = 3
(define b (+ a 1))   ; b = 4
(+ a b (* a b))     ; 19
(= a b)            ; #f
(if (and (> b a) (< b (* a b)))
    b
    a)              ; b
(cond ((= a 4) 6)
      ((= b 4) (+ 6 7 a)) ; 16
      (else 25))         ; 25
(+ 2 (if (> b a) b a))  ; 6
(* (cond ((> a b) a)   ; 4
         ((< a b) b)      ; 4
         (else -1))       ; -1
   (+ a 1))             ; 5

Evaluation

is there anything special that i need to think through?

Looking at this code, it’s a great introduction to Scheme (part of SICP - Structure and Interpretation of Computer Programs). Here are the key things to think through:

  1. Prefix Notation: Notice how Scheme uses prefix notation (operator operand1 operand2 ...) instead of infix notation. For example:

    • (+ 5 3 4) instead of 5 + 3 + 4
    • (* 2 4) instead of 2 * 4
  2. Variable Definition:

    • define is used to create variables
    • Notice how b is defined using a: (define b (+ a 1))
    • Variables can be used in subsequent expressions
  3. Conditional Expressions:

    • if expressions: (if condition true-case false-case)
    • cond expressions: Multiple conditions with different results
    • Boolean operators like and, >, <, =
  4. Nested Expressions:

    • Expressions can be nested deeply
    • Evaluation happens from innermost to outermost
    • Each expression returns a value that can be used by its parent expression
  5. Comments:

    • Comments in Scheme start with ;
    • The comments here show the expected output of each expression

This code snippet is actually a classic example from SICP Chapter 1.1, designed to demonstrate basic Scheme syntax and evaluation rules. It’s worth working through each expression step by step to understand how Scheme evaluates them.

Would you like me to explain any particular expression in more detail?

No thank you

Alright! Let me know if you have any other questions as you work through the Scheme exercises. Good luck!