On Thursday, 18 February 2016 at 18:35:40 UTC, Steven Schveighoffer wrote:
On 2/18/16 12:08 PM, Wyatt wrote:

I hadn't thought of this before, but if we accept that a stream is raw,
untyped data, it may be best _not_ to provide a range interface
directly.  It's easy enough to

alias source = sourceStream.as!ubyte;

anyway, right?

An iopipe is typed however you want it to be.

Sorry, sorry, just thinking (too much?) in terms of the conceptual underpinnings.

But I don't think we really disagree, either: if you don't give a stream a type it doesn't have one "naturally", so it's best to be explicit even if you're just asking for raw bytes. That's all I'm really saying there.

But the concept of what constitutes an "item" in a stream may not be the "element type". That's what I'm getting at.

Hmm, I guess I'm not seeing it. Like, what even is an "item" in a stream? It sort of precludes that by definition, which is why we have to give it a type manually. What benefit is there to giving the buffer type separately from the window that gives you a typed slice into it? (I like that, btw.)

However, you have some issues there :) popFront doesn't return anything.

Clearly, as!() returns the data! ;)

But criminy, I do actually forget that ALL the damn time! (I blame Broadcom.) The worst part is I think I've even read the rationale for why it's like that and agreed with it with much nodding of the head and all that. :(

And I think parsing/processing stream data works better by examining the buffer than shoehorning range functions in there.

I think it's debatable. But part of stream semantics is being able to use it like a stream, and my BER toy was in that vein. Sorry again, this is probably not the place for it unless you try to replace the std.stream for real.

-Wyatt

Reply via email to