Gauche > Archives > 2015/04/07

2015/04/07 03:46:17 UTCshiro
#
C++ streams http://jscheiny.github.io/Streams/ んーまあC++的にはiostreamがあったわけだしstreamと呼びたくなるだろうけど副作用で状態更新してくから自分の感覚としてはgeneratorとgathererなんだよなあ。streamというと無限リストで抽象される構造の方を連想する。大きな違いは、後者は「途中の状態」を自然に軽く掴んでおくことができるがgeneratorは途中を掴みたかったら状態をコピーするか読んじゃった分を別に持っておくかしないとならないこと。この違いは大きい。
#
先読みが必要な処理を書いてみれば違いが際立つ。関数的streamでは何も気にする必要がないがgeneratorだと色々面倒。
2015/04/07 03:52:30 UTC(び)
#
どうもストリームって聞くと最初にこっちを思い浮かべちゃいますね。
#
http://ja.wikipedia.org/wiki/STREAMS
2015/04/07 03:55:07 UTCshiro
#
ああ、SysVのstreamありましたね。まあそれ言ったらCLも入出力をstreamとして抽象化してるし、副作用ありがおかしいってわけじゃないんですが。ただ使い方が入出力から離れて一般のデータストリームになってくると文化の衝突があるかもしれないなあと。
#
そうそう、C++のそれに"lazy"が機能として入ってきたので、関数型言語における関数的streamの方を連想しちゃうのかもしれない。
2015/04/07 03:56:51 UTC(び)
#
ですね。「無限リストで抽象される構造」の方を知ったのはSTREAMSを知ったずっと後なので、今でも頭の切り替えが必要です。