5.9 KiB
5.9 KiB
title | author | date | url | wordtwit_post_info | categories | ||
---|---|---|---|---|---|---|---|
Reading SICP – 2 | kazu634 | 2008-11-30 | /2008/11/30/reading-sicp-2/ |
|
|
Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)を読む、その2です。今回は
-
compound procedure(例えば (define (square a) (* a a))しておいてから、(define (sum-of-square a b) (+ (square a) (square b)))と書いた時の「(define (sum-of-square a b) (+ (square a) (square b)))」のこと)
-
substitution model (インタープリタ内部でどのようにcompound proedureを評価するのか。暫定的な説明として、「手続きを置き換え(substitute)てprimitiveな手続きのみの組み合わせに変換する」というモデルが導入される。でも、これは後で破綻するよ!って書いてあった)
- Applicative order(インタープリタが行っている方法。引数を先に評価してから、operandを適用する)
- normal order(まずはoperandをどんどんprimitiveな手続きに変換する)
-
substitution model (インタープリタ内部でどのようにcompound proedureを評価するのか。暫定的な説明として、「手続きを置き換え(substitute)てprimitiveな手続きのみの組み合わせに変換する」というモデルが導入される。でも、これは後で破綻するよ!って書いてあった)
というようなことが書いてありました(私の理解が間違えていなければ…)。
Excercise (pp 20-21)
Excercise 1.2
Translate the following expression into prefix form
(/ (+ 5 4 (- 2 (- 3 (+ 6 (/ 4 5))))) (* 3 (- 6 2) (- 2 7)))
Excercise 1.3
Define a procedure that takes 3 numbers as arguments and returns the sum of the squares of the two larger numbers.
(define (sum-of-square a b c) (define (square n) (* n n)) (cond [(and (< a b) (< a c)) (+ (square b) (square c))] ; when a is the smallest [(and (< b a) (< b c)) (+ (square a) (square c))] ; when b is the smallest [(and (< c a) (< c b)) (+ (square a) (square b))])) ; when c is the smallest