Latest Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


人気blogランキングへ

SICP 問題 1.5


(define (p) (p))

(define (test x y)
(if (= x 0)
0
y))

(test 0 (p))

; 作用的順序
(test 0 (p))
;=>
(test 0 (p))
;=>
(test 0 (p))
;=>.....
; (p) = (p) なので、以下、延々と評価がループする
; 実際、この式は無限ループになり,評価できない。


; 正規順序
(test 0 (p))
;=>
(if (= 0 0)
0
(p))
;=>
(if #t
0
(p))
;=>
0


人気blogランキングへ

SICP 問題 1.4


(define (a-plus-abs-b a b)
((if (> b 0) + - ) a b))

(a-plus-abs-b 1 2)
;=> 3

(a-plus-abs-b 1 -2)
;=> 3

; ((> b 0) + - ) の部分は
; b が正の数なら +演算子を、bが0以下の場合は -演算子を返す。
; 返された演算子を使って、そのまま評価が可能。


人気blogランキングへ

SICP 問題 1.3

(define (square n)
(* n n))

(define (pythagoras a b)
(+ (square a) (square b)))


(define (max-square a b c)
(cond ((= (min a b c) a) (pythagoras b c))
((= (min a b c) b) (pythagoras a c))
((= (min a b c) c) (pythagoras a b))))

;テスト
(max-square 2 3 4) ;=> 25
(max-square 12 3 4) ;=> 160
(max-square 2 12 22) ;=> 628
(max-square 2 2 2) ;=> 8


人気blogランキングへ

SICP 問題 1.2

(/ (+ 5 4 (- 2 (- 2(+ 6 4/5)))) (* 3 (- 6 2) (- 2 7)))
;=> -79/300


人気blogランキングへ

SICP の問題を解いていきます

これからSICPの問題の解答をブログに書いていこうと思います。

*本ブログの解答例においては、正確性は全く保証できません。ご注意ください。

人気blogランキングへ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。