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


問題 3-68 (3.5.3 Exploiting the Stream Paradigm)

この pairs の実装はどこが間違っているのかという問題です.

(define (pairs s t)
  (interleave
   (stream-map (lambda (x) (list (stream-car s) x))
               t)
   (pairs (stream-cdr s) (stream-cdr t))))

実際に走らせてみたところ,無限ループにハマってしまいました.

(pairs integers integers)

そうか! interleave の段階では遅延評価されないので,interleave を呼び出す段階で,pairs が呼び出される.integers は無限ストリームだからこの呼び出しが止まらず,無限ループになるわけか.




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

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