Last active
December 30, 2015 07:39
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; 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