Accessors, byLine, input ranges
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Fri Jan 29 09:53:27 PST 2010
Michel Fortin wrote:
> On 2010-01-29 12:21:18 -0500, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org> said:
>
>> Michel Fortin wrote:
>>> Yeah, it's less likely to be a problem. But "less likely to be a
>>> problem" does still does not make things reliable. Something reliable
>>> works all the time, or it just doesn't work and tells you.
>>
>> stream.front after stream.popFront works all the time and fetches a
>> new line off the stream. Like Steve said, you can't at the same time
>> fetch a line and leave it back in the stream.
>
> The problem is that algorithms that depends on this will work with other
> ranges, but will fail silently when given a stream.
An algorithm can fail in many silent ways if it misuses the range
interface. None of std.algorithm algorithms uses front naively.
> In all seriousness, even Java streams are better modeled than this
> (although more limited by not having templates). The basic Java input
> stream doesn't have a 'front' byte, you can only read the next byte (or
> the few next bytes). If you need to rewind, there is a standard way, but
> most streams need to be wrapped in a buffered stream first to provide
> this capability.
Can you run a basic algorithm on a Java stream and on an array as well?
Andrei
More information about the Digitalmars-d
mailing list