問題3.74 – SICP(計算機プログラムの構造と解釈)その164
問題3.74 ストリーム sense-data を三角関数を使って仮に表現する。 (define sense-data (stream-map (lambda (x) (sin x)) integers)) (stream-head sense-data 10) gosh> 0.8414709848078965 0.9092974268256817 0.1411200080598672 -0…続きを読む
問題3.74 ストリーム sense-data を三角関数を使って仮に表現する。 (define sense-data (stream-map (lambda (x) (sin x)) integers)) (stream-head sense-data 10) gosh> 0.8414709848078965 0.9092974268256817 0.1411200080598672 -0…続きを読む
問題3.73 図3.33の通りに手続き RC を定義したが、出力される結果がこれで正しいのかわからない… (define (integral integrand initial-value dt) (define int (cons-stream initial-value (add-streams (scale-stream integrand dt) int))) int) (de…続きを読む
問題3.72 weighted-pairs 等の必要な手続きは問題3.70のものを使う。 (define (add-square-pairs-weight pair) (let ((i (car pair)) (j (cadr pair))) (+ (square i) (square j)))) (define st (weighted-pairs integers integers add-s…続きを読む
問題3.71 weighted-pairs 等の必要な手続きは問題3.70のものを使う。 ;;;; Ramanujan 数を求める (define (add-cube-pairs-weight pair) (let ((i (car pair)) (j (cadr pair))) (+ (cube i) (cube j)))) (define st (weighted-pairs integers…続きを読む
問題3.70 (define (merge-weighted pairs1 pairs2 weight) (cond ((stream-null? (stream-car pairs1)) pairs2) ((stream-null? (stream-car pairs2)) pairs1) (else (let ((p1car (stream-car pairs1)) (p2car (strea…続きを読む
問題3.69 pairs を参考にして考える。 (define (triples s t u) (cons-stream (list (stream-car s) (stream-car t) (stream-car u)) (interleave (stream-map (lambda (x) (cons (stream-car s) x)) (pairs (stream-cdr t) (str…続きを読む
問題3.68 cons-stream を使わないために遅延評価が行われず、interleave の引数が評価されてしまい無限ループに陥る。 (define (pairs s t) (interleave (stream-map (lambda (x) (list (stream-car s) x)) t) (pairs (stream-cdr s) (stream-cdr t)))) 計算機プログ…続きを読む
問題3.66 パス 問題3.67 (define (interleave s1 s2) (if (stream-null? s1) s2 (cons-stream (stream-car s1) (interleave s2 (stream-cdr s1))))) (define (pairs s t) (cons-stream (list (stream-car s) (stream-car t…続きを読む
問題3.65 (define (log-summands n) (cons-stream (/ 1.0 n) (stream-map – (log-summands (+ n 1))))) (define log-stream (partial-sums (log-summands 1))) それぞれの収束の速さの違いが一目瞭然。 partial-sums 手続きを使った場合 (stream-he…続きを読む
問題3.64 (define (stream-limit st tolerance) (let ((s1 (stream-car st)) (s2 (stream-car (stream-cdr st)))) (if (< (abs (- s1 s2)) tolerance) s2 (stream-limit (stream-cdr st) tolerance)))) (define (sq…続きを読む