練習問題の解答

***** 練習1の解答 *****

(define apple 110)
(define orange 90)
(define pineapple 230)
(define peech 190)
(define melon 800)
(define box 50)
(define giftbox (+ (* melon 1) (* apple 5) (* orange 3) box))
(define specialbox (+ (* (* peech 0.9) 3) pineapple (* (* orange 0.8) 5)))

***** 練習2の解答 *****
(define f (lambda (x)
	(+ (* x x) (* 5 x) 6)))
(define g (lambda (x)
	(* (+ x 2) (+ x 3))))
(define d (lambda (a b c)
	(- (* b b) (* 4 a c))))
(define s (lambda (a b t)
	(* 1/2 a b (sin (/ (* pi t) 180)))))
(define heron1 (lambda (a b c s)
	(sqrt (* s (- s a) (- s b) (- s c)))))
(define heron (lambda (a b c)
	(heron1 a b c (/ (+ a b c) 2))))

heron が heron1 を呼び出すインタフェースになっている。このような書き方は、後で学ぶ Prolog ではよく使われる。

ヘロンの公式については、もっとマニアックな書き方がある。
(define heron (lambda (a b c)
        ((lambda (a b c s) (sqrt (* s (- s a) (- s b) (- s c))))
          a b c (/ (+ a b c) 2))))

heron1 の定義を展開しただけである。


(C) 2007.5.29 by tokuhisa