- 384 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 22:05:50.63 ]
- >>383
> 遅延評価とバッファの関係がよくわからないな。 >>374 のコードは今回の私の話とは全く関係ない >>376 のストリームの話だ 逆順に指定行数を出力するという処理を「ストリームとして処理」するなら、 順に流入してきたデータを全て一時的にどこかに溜めて(バッファ)、 溜め終わってから、そこのデータの末尾から順に流出させる必要がある そのバッファをどうやって作るか、どうやってデータの出し入れをするか、 ということが問題になるが、遅延評価を実現する仕組みのおかげで、 Haskell(の大抵の実装)ではそれを意識しなくてもできてしまう 上の方のレスで問題視された「ふつける」に載ってる方法だ getContents 関数から流出した(リストで表現された)ストリームが reverse 関数に流入してくる 遅延評価の仕組みにより、reverse 関数はリストの内容は評価しない 後で評価する可能性がある未評価のデータはメモリ内に残り続ける この部分がストリームを逆順にたどるための「バッファ」の役割を果たしている
|

|