Skip to content

Instantly share code, notes, and snippets.

@paddycakes
Last active December 30, 2015 07:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paddycakes/7797796 to your computer and use it in GitHub Desktop.
Save paddycakes/7797796 to your computer and use it in GitHub Desktop.
Structure and Interpretation of Computer Programs (SICP) - Chapter 1 exercises and solutions in Scheme
;; Exercise 1.1. 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.
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
(define b (+ a 1))
;Value: b
(+ 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
;; Exercise 1.3. Define a procedure that takes three numbers as arguments and returns the sum of
;; the squares of the two larger numbers.
(define sum-of-squares
(lambda (x y z)
(cond ((> x y)
(cond ((> y z) (+ (* x x) (* y y)))
(else (+ (* x x) (* z z)))))
((> x z) (+ (* x x) (* y y)))
(else (+ (* y y) (* z z))))))
;; Exercise 1.4. Observe that our model of evaluation allows for combinations whose operators are
;; compound expressions. Use this observation to describe the behavior of the following procedure:
(define (a-plus-abs-b a b)
((if (> b 0) + -) a b))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment