The XML module in Phobos
Steven Schveighoffer
schveiguy at yahoo.com
Fri Jul 31 07:06:05 PDT 2009
On Fri, 31 Jul 2009 02:26:34 -0400, Daniel Keep
<daniel.keep.lists at gmail.com> wrote:
> Another, somewhat smaller concern, is that the range interface is
> back-to-front for IO.
>
> Consider a stream: you don't know if the stream is empty until you
> attempt to read past the end of it. Standard input does this, network
> sockets do this... probably others.
>
> But the range interface asks "is this empty?", which you can't answer
> until you attempt to read from it. So to implement .empty for a
> hypothetical stdin range, you'd need to try reading past the current
> location. If you get a character, you've just modified the underlying
> stream.
These problems have been discussed before, I hope they can be solved. I
agree with you that streams do not fit the range interface particularly
well, I think the best solution might be to NOT use ranges to implement
streams, but allow applying ranges on top of streams for interfacing with
other ranges.
Here is one past discussion you may find interesting:
http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=90971
This is the first posting, but towards the end is where I came to the
realization that ranges and streams don't fit together perfectly.
-Steve
More information about the Digitalmars-d
mailing list