Jump to content

Talk:Structure and Interpretation of Computer Programs

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 68.48.250.117 (talk) at 16:03, 7 January 2006. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Discussion of exercises from Structure and Interpretation of Computer Programs assumes the use of the MIT Scheme interpreter.

Exercise 1.1

10
;Value 10
(+ 5 3 4)
;Value 12
(- 9 1)
;Value 8
(/ 6 2)
;Value 3
(+ (* 2 4) (- 4 6))
;Value 6
(define a 3)
;Value "a --> 3"
(define b (+ a 1))
;Value "b --> 4"
(+ a b (* a b))
;Value 19
(= a b)
;Value #f
(if (and (> b a) (< b (* a b)))
   b
   a)
;Value 4
(cond ((= a 4) 6)
     ((= b 4) (+ 6 7 a))
     (else 25))
;Value 16
(+ 2 (if (> b a) b a))
;Value 6
(* (cond ((> a b) a)
        ((< a b) b)
        (else -1))
  (+ a 1))
;Value 16

Exercise 1.2

(/ (+ 5 4 (- 2 (- 3 (+ 6 (/ 4 3)))))
   (* 3 (- 6 2) (- 2 7)))

Exercise 1.3

(define (sum-larger-squares a b c)
 (cond 
  ((and (<= a b) (<= a c)) (+ (* b b) (* c c)))
  ((and (<= b a) (<= b c)) (+ (* a a) (* c c)))	
  (else (+ (* a a) (* b b)))))

Exercise 1.4

Determine the operation based on the value of b. When b is greater than zero, add b to a. Otherwise, subtract b from a.

Exercise 1.5

Normal order:

(test 0 (p))
; substitute the definition of test
(if (= 0 0) 0 (p))
; if forces the first argument to be evaluated
(if #t 0 (p))
; because the first argument is #t, the second argument
; is evaluated and the third argument is ignored
;Value 0

Applicative order:

(test 0 (p))
; substitute the definition of test and the arguments
; (p) is defined as (p), so the interpreter enters an
; infinite loop

Exercise 1.6

Because new-if is a user defined function and user defined functions evaluate arguments in applicative order, the call to sqrt-iter will cause infinite recursion.

Exercise 1.7

Exercise 1.8