Bartosz Milewski seems to like D more than C++ now :)

Szymon Gatner noemail at gmail.com
Fri Sep 20 06:50:19 PDT 2013


On Friday, 20 September 2013 at 13:32:47 UTC, Dmitry Olshansky 
wrote:
> 20-Sep-2013 15:01, Szymon Gatner пишет:
>> On Friday, 20 September 2013 at 10:47:52 UTC, Dmitry Olshansky 
>> wrote:
>>> 20-Sep-2013 14:00, Jacob Carlborg пишет:
>>>> On 2013-09-20 11:37, Szymon Gatner wrote:
>>>>
>>>>> If only std algorithms took containers (by that I mean 
>>>>> things that
>>>>> container for accepts too) as arguments (and not 
>>>>> iterators)... even in
>>>>> the form of new functions like foreach_all, transform_all 
>>>>> etc.
>>>>
>>>> Can't a container be a range as well?
>>>>
>>>
>>> For Christ sake no, no and no. For starters range skips/drops 
>>> elements
>>> when iterating, and thusly iteration has its own state that 
>>> is useless
>>> for a container otherwise.
>>>
>>
>> Iteration is a stateful process, ranges are related to the 
>> process of
>> iteration not to containers. As you say state is useless for 
>> containers
>> but is necessary to iteration and its context.
>>
>
> A text-book example of self-destruction(?).
> Ranges (in particular Input/Forward) are not much above 
> encapsulation of iteration, hence must contain that state 
> required to iterate said elements. Which leads to the point 
> that indeed containers have no business being ranges by 
> themselves.
>
> The bottom line is:
> sort(container[]);
> vs
> sort(container);
>
> Where I hardly see how coupling containers with algorithms can 
> bring even slightest benefit.

OK so it seems we agree. I never said that containers should be 
ranges. Ranges are abstraction on iterators and that is it. 
Single container can have multiple ranges existing at the same 
time. State is attached to ranges not containers. And most 
importantly ranges are mutable always, even if underlying 
container isn't. Ranges are meant to have state. No idea what you 
mean by self destruction.


More information about the Digitalmars-d mailing list