D言語のStreamについての議論

D言語でのStreamが迷走している様子です。
2
前へ 1 ・・ 8 9 次へ
/dev/null @satoru_h

@Rayerd あった方が便利だと思います.と言ってもinterface InOutStream : InStream, OutStream{}だけですが.僕の方の実装も明日,明後日くらいにはあげたいと思います.(SHOOさんより優れている!と言うわけでは無いですが,参考として)

2010-07-05 02:58:44
/dev/null @satoru_h

StreamWrapperは静的ダックタイピングで不可能な事があった場合の為.程度じゃないかにゃぁ.SHOOさんがdusersにかかれているのもそういうことだと思う.

2010-07-05 03:01:10
/dev/null @satoru_h

InOutStream[]はInOutStreamの集合.ConduitはInStreamとOutStreamの異なる二本のStreamを一本に見せる.使われる場所が違う.

2010-07-05 03:02:51
/dev/null @satoru_h

その上で,Conduitはわかりにく(いから,なくてもよ)くね?と言うのが僕の意見.

2010-07-05 03:03:15
/dev/null @satoru_h

struct Cond(I, O) {}として,auto cond = Cond!(FileStream, SocketStream)(f, s);もアリだし,そこで,静的ダックタイピングで不可な状況になれば,Cond!(InStream, OutStream)[] conds;

2010-07-05 03:05:32
/dev/null @satoru_h

みたいにして,conds ~= Cond(wrap(fs), wrap(ss));もアリだと思う.

2010-07-05 03:06:13
はるえす@イカのフレンズ @Rayerd

@satoru_h ただ,実行時にFileStreamやSocketStream,MemoryStreamを切り換えることってまずないじゃない.だからduck typingなんでしょ.だったら(続く

2010-07-05 03:07:05
はるえす@イカのフレンズ @Rayerd

@satoru_h InOutStream[] ss; ss~=fileStream; ss~=memoryStream;とか現れない.stream collectionは静的なTypeTuple!(MemoryStream, FileStream, ...)などで書けるよね

2010-07-05 03:11:18
/dev/null @satoru_h

@Rayerd こちらは同意.想定されているwrapの使われ方は別なところにあると思うけれど,それがほんとに必要かは僕は分かっていない.ただ,wrapはconduitと違って他のstreamを使用する関数などには影響しないのであっても邪魔じゃない.

2010-07-05 03:15:03
/dev/null @satoru_h

@Rayerd 宣言時に保持する型と_順番_が決まっている.と?

2010-07-05 03:17:56
はるえす@イカのフレンズ @Rayerd

@satoru_h ぬーぬー.InputStream/OutputStream InterfaceとStreamTupleがあればそれでいいような気がしている

2010-07-05 03:18:16
/dev/null @satoru_h

wrapは絶対いるよね!って僕言ったかな?wrapは存在しても邪魔じゃない.程度のスタンスであることをあらかじめ(どこがだよ)断っておく.

2010-07-05 03:19:16
/dev/null @satoru_h

TypeTupleについて,ちょっと考えている...それは型と順番が静的に決まってるのよねぇ.

2010-07-05 03:20:09
はるえす@イカのフレンズ @Rayerd

@satoru_h 話しながら考えましょうw 僕も自信ないw 俺が考えてたのはIOStream Interfaceは異型のstream(ex; FileStreamとMemoryStream)までもまとめることができるけど,この機能はオーバースペックじゃないの?ってことかな.

2010-07-05 03:22:09
はるえす@イカのフレンズ @Rayerd

ごめんね(´・ω・`) RT @satoru_h: wrapは絶対いるよね!って僕言ったかな?wrapは存在しても邪魔じゃない.程度のスタンスであることをあらかじめ(どこがだよ)断っておく.

2010-07-05 03:22:36
/dev/null @satoru_h

いや,wrapが無いならinterface InputStream/OutputStreamもいらない.利用上は.あった方がStreamを実装する人にわかりやすいけど.

2010-07-05 03:22:39
/dev/null @satoru_h

@Rayerd いえいえ.僕も考えがまとまって無かったのでいい刺激になります.

2010-07-05 03:23:04
/dev/null @satoru_h

(ついにIOStreamになったw)

2010-07-05 03:23:50
はるえす@イカのフレンズ @Rayerd

@satoru_h でもこれを言い出すとInputStreat/OutputStream Interfaceもいらない・・・あ,同じこと言ってるw

2010-07-05 03:24:36
/dev/null @satoru_h

@Rayerd なるなる.静的に型が決まる場合には,isInputStream(etc.)があれば他はいらないと思います.(理論的には)TypeTupleでさえも.# TypeTupleって動的に長さ変えられないですよね?

2010-07-05 03:26:10
/dev/null @satoru_h

@Rayerd なので,静的に型が決まらない場合,集合のサイズが決まらない場合,が_あるとすれば_wrapは必要ですよね?(確認:あんま分かってない)

2010-07-05 03:27:45
はるえす@イカのフレンズ @Rayerd

@satoru_h そう長さは変えられないんだ.「長さを変えられる」「異なるstreamを受け取れる」の2つは別の特性だと思うんだよね

2010-07-05 03:27:52
/dev/null @satoru_h

@Rayerd なるほど.長さを変えられる -> FileStream[].いろいろ+長さを変える -> StreamWrapper[]ですね.

2010-07-05 03:29:48
/dev/null @satoru_h

@Rayerd 追加.異なるstreamを受け取れる -> StreamWrapperですね.

2010-07-05 03:31:40
はるえす@イカのフレンズ @Rayerd

@satoru_h そういう意味でStreamWrapperは現実問題に対してオーバースペック(Andreiが嫌いな動的多態性の性質?)なんだよなあと

2010-07-05 03:32:58
前へ 1 ・・ 8 9 次へ