以下の内容はhttps://kiririmode.hatenablog.jp/entry/20080823/p3より取得しました。


問題3-54 (3.5.2 Infinite Streams)

目的は n 番目の要素が (n+1)! になるような無限ストリーム factorials を作成すること.

まずは,2 つのストリームを掛け合わせる

まずは,2 つのストリームを掛け合わせて,新しい無限ストリームを作るような関数 mul-stream をこさえます.

(define (mul-stream s1 s2)
  (stream-map * s1 s2))

こさえると言っても,add-stream の演算子を変えただけだし,このあたりになると add-stream と mul-stream の共通部分を括り出してもよさそうな気がしますね! SICP でもたしか第一章で似たような話をやってたなー.

そして目的の無限ストリーム factorials を作る

; n から始まる整数の無限ストリームを構成
(define (integers-starting-from n)
  (cons-stream n (integers-starting-from (+ n 1))))

; ゴール
(define factorials
  (cons-stream 1
               (mul-stream factorials
                           integers))))

(stream-car factorials)     ; 1
(stream-cadr factorials)    ; 1
(stream-caddr factorials)   ; 2
(stream-cadddr factorials)  ; 6



以上の内容はhttps://kiririmode.hatenablog.jp/entry/20080823/p3より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14