前節に述べたふたつのプロセスは, 述語 naturals で表されるプロセスが次々 に作り出す値を, 述語 sum で表されるプロセスが次々に使っていく, という 関係にある. その仲介役を果たすのが要素が段々に具体的な値に決まってい くようなリストという未完成データ構造だった.
このリスト構造を, データが次々に流れていくような通信路だと考えることも できる. プロセス naturals はこの通信路に次々に自然数を流して行き, プ ロセス sum がその通信路の出口からデータを読み取っては計算を進める (図 1.3). データがまだ到着していなければ, 読み取り側のプロセスは待 たされる.
通信路を実現しているのはデータ構造コンスである. その car にはストリー
ムを流れるデータが入り, cdr はストリームの続きを表す. 空のリスト
[] は, 必要な通信が終りまで来てしまい, もうこれ以上メッセージがないこ
とに対応する. このように通信路がデータ構造になっているので, データの
流れる順序はどのようなデータ構造を作るかで完全に決まってしまうので, 計
算の実行順序や通信遅延の違いが, そのままデータの順序に影響することはな
い. このような通信路を ストリーム (stream) という.
ストリームを流れるデータはプロセス間で受け渡される メッセージ (message) であるとも考えられる. つまり, naturals というプロセスは sum というプロセスに次々に, この数も足してくれ, この数も, というメッセージ を送っているわけである.