3.5 Stream
project euler からちょっと離れて SICP でストリームの勉強をしてみます。
バックグラウンド
目的
- 遅延評価とストリームが scheme でどう実装されるのかが分かっていないので、そこを理解する。
- 素数の無限ストリームを作って、project euler の問題を解くのに使ってみたい。
とりあえず
3.5 節 Stream を読んでいこうと思います。
stream
cons, car, cdr のストリーム版である cons-stream, stream-car, stream-cdr の説明。ここで重要なのは本文ではなくて脚注 56 で説明されている「delay は special form である」ということだ。(cons-stream a b) を呼び出したときに b はすぐに評価されないというのがミソ。4 章で eval やってるときに if や cond も同じく special form という説明があったはずだ。