2.2.1 並びの表現 – SICP(計算機プログラムの構造と解釈)その34
並びの表現 gauche では nil は () で表現する。 (define list1 (cons 1 (cons 2 (cons 3 (cons 4 ()))))) list1 gosh> (1 2 3 4) (define list2 (list 1 2 3 4)) list2 gosh> (1 2 3 4) (car list1) gosh> 1 (cdr list1)…続きを読む
並びの表現 gauche では nil は () で表現する。 (define list1 (cons 1 (cons 2 (cons 3 (cons 4 ()))))) list1 gosh> (1 2 3 4) (define list2 (list 1 2 3 4)) list2 gosh> (1 2 3 4) (car list1) gosh> 1 (cdr list1)…続きを読む
問題2.13 パス 問題2.14 確かに計算結果が異なっている。 (define (par1 r1 r2) (div-interval (mul-interval r1 r2) (add-interval r1 r2))) (define (par2 r1 r2) (let ((one (make-interval 1 1))) (div-interval one (add-interval (d…続きを読む
問題2.12 中央値とパーセント相対許容誤差で表す数を扱うプログラム (define (make-center-percent c p) (let ((w (* c (/ p 100)))) (make-interval (- c w) (+ c w)))) (define (center i) (/ (+ (lower-bound i) (upper-bound i)) 2.0)) (defin…続きを読む
問題2.10 最初に思いついた解答 (define (div-interval x y) (if (and (< (lower-bound y) 0) (> (upper-bound y) 0)) (error "error") (mul-interval x (make-interval (/ 1.0 (upper-bound y)) (/ 1.0 (lower-…続きを読む
問題2.7 2つの区間の演算 (define (add-interval x y) (make-interval (+ (lower-bound x) (lower-bound y)) (+ (upper-bound x) (upper-bound y)))) (define (mul-interval x y) (let ((p1 (* (lower-bound x) (lower-bound …続きを読む
問題2.6 各数の定義は引数として与えられた手続き f をn回作用させる手続きを返す。 (define zero (lambda (f) (lambda (x) x))) (define one (lambda (f) (lambda (x) (f x)))) (define two (lambda (f) (lambda (x) (f (f x))))) (define three (lambd…続きを読む
問題2.4 置換えモデルを使えば cons がどう働くかがわかりやすい。 (define (cons x y) (lambda (m) (m x y))) (define (car z) (z (lambda (p q) p))) (car (cons x y)) (car (lambda (m) (m x y))) ((lambda (m) (m x y)) (lambda (p q) p)) …続きを読む
問題2.3 長方形のデータ抽象(2点で定義) ; 始発点、終着点で長方形を定義 (define (make-rectangle start end) (cons start end)) ; 長方形の幅 (define (width rectangle) (let ((start (start-segment rectangle)) (end (end-segment rectangle))) (a…続きを読む
2.1.2 抽象の壁 問題2.2 線のデータ抽象 (define (make-segment start end) (cons start end)) (define (start-segment segment) (car segment)) (define (end-segment segment) (cdr segment)) 点のデータ抽象 (define (make-point x y)…続きを読む
2.1.1 有理数の算術演算 cons(construct)、car(Contents of Address part of Register)、cdr(Contents of Decrement part of Register)によって対(pair)を作り有理数を表現する。 (define x (cons 1 2)) (car x) 1 (cdr x) 2 (define (add-rat x…続きを読む