ideas about ranges
Steven Schveighoffer
schveiguy at yahoo.com
Fri May 22 18:38:01 PDT 2009
On Fri, 22 May 2009 21:22:55 -0400, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> wrote:
> Steven Schveighoffer wrote:
>> On Fri, 22 May 2009 17:10:45 -0400, Andrei Alexandrescu
>> <SeeWebsiteForEmail at erdani.org> wrote:
>>
>>> Steven Schveighoffer wrote:
>>>> I'm concentrating mostly on usages with foreach, not algorithms. If
>>>> we are to have streams that fit into the range model, then they need
>>>> to be foreach'able. I don't know that they need a lot of support to
>>>> feed into std.algorithm as reference data. I.e. you aren't going to
>>>> sort a network stream.
>>>
>>> Plenty of algorithms work on input ranges.
>>>
>> I'm confused, by input range you mean a stream? Because I'm operating
>> under the assumption that an input range is anything that defines
>> front, popFront, and empty. While you can shoehorn a stream into being
>> an input range, they don't necessarily implement the required elements
>> easily. We may be confusing terminology.
>> Can you name an example of an input range that is a stream, and an
>> algorithm that mutates the stream in place (thereby requiring ref
>> elements)?
>
> There isn't. All I'm saying is, we have the following constraints:
>
> 1. Any range should be seamlessly and efficiently used as an input range.
This is the assumption I am challenging. I don't think you need this
assumptions for ranges to work. You can always bolt input range
functionality on top of a stream range if you want to treat a stream as an
input range for some reason. But if foreach doesn't utilize the popNext
api, then streams require an unnecessary layer on top, just to use foreach
with them.
-Steve
More information about the Digitalmars-d
mailing list