SICPを読む(2)

p.20近辺まで読み進めた。
lispの文法解説っぽいことが続くので、軽く読み飛ばして、練習問題をこなしてみた。

○ 問題 1.1

> (+ 5 4 3)
12

> (- 9 1)
8

> (/ 6 2)
3

> (+ (* 2 4) (- 4 6))
6

> (define a 3)
a

> (define b (+ a 1))
b

> (+ a b (* a b))
19

> (= a b)
#f

> (if (and (> b a) (< b (* a b))) b a)
4

> (cond ((= a 4) 6)
        ((= b 4) (+ 6 7 a))
        (else 25))
16

> (* (cond ((> a b) a)
           ((< a b) b)
           (else -1))
     (+ a 1))
16


○ 問題 1.2

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

○ 問題 1.3

(define (F x y z)
  (cond ((< x y) (F y x z))
	((< y z) (F x z y))
	(else (+ (* x x) (* y y)))))

値の大きい順にx,y,zが並ぶようにしてから、xとyを使えば良い。
こういった形でソートをすることを思い浮かばなくて、webの解答を見て軽く感動してしまった。
...これはきちんと勉強してみる価値はあるのかも...

続きはまた次回