(wat-aro)

生きてます

2015-12-09から1日間の記事一覧

SICP 問題 3.58

(define (expand num den radix) (cons-stream (quotient (* num radix) den) (expand (remainder (* num radix) den) den radix))) #| (/ num den)を表す少数を生成する. (expand 1 7 10)は 1 4 2 8 5 7 (expand 3 8 10)は 3 7 5 0 つまり0.375で割り切れ…

SICP 問題 3.57

メモ化しているので(add-streams (stream-cdr fibs) fibs)の部分で加算が一回行われるだけで済んでいる. これがメモ化していない場合はfibsの値も(stream-cdr fibs)の値も0番目と1番目の値から加算して求めなくてはならない. (define fibs (cons-stream 0 …

SICP 問題 3.56

(define (merge s1 s2) (cond ((stream-null? s1) s2) ((stream-null? s2) s1) (else (let ((s1car (stream-car s1)) (s2car (stream-car s2))) (cond ((< s1car s2car) (cons-stream s1car (merge (stream-cdr s1) s2))) ((> s1car s2car) (cons-stream s2c…

SICP 問題 3.55

s0, s0 + s1, s0 + s1 + s2, ... という要素なのでstreamの次の要素とsum-integersの今の要素を足したものがsum-integersの次の要素となる. (define (partial-sums stream) (cons-stream (stream-car stream) (add-streams (stream-cdr stream) sum-integer…

SICP 問題 3.54

mul-streamsを定義して,0から始まるn番目の階乗,factorialsを定義する. (define (mul-streams s1 s2) (stream-map * s1 s2)) (define factorials (cons-stream 1 (mul-streams factorials (integers-starting-from 1))))

SICP 問題 3.53

(define (add-streams s1 s2) (stream-map + s1 s2)) (define s (cons-stream 1 (add-streams s s))) sは2のn乗のストリームを作る.

SICP 3.5章のstreamについて

整理しなおす. 環境はGauche 0.9.4. streamを本文通りに実装するとうまくいかない. 遅延リストになっていない. stream-mapの挙動からそれがわかる. (define (stream-map proc . argstreams) (if (stream-null? (car argstreams)) the-empty-stream (cons…

SICP 問題 3.52

sum:210 メモ化しているためにseqを何回呼び出してもsumに何度も加算されることがない. メモ化していない場合はseqを参照するたびにsumに加算されていく.