std.v2020.algorithm etc[ WAS: Is run.d going to be expand for runtime and the phobos library?]

Stanislav Blinov stanislav.blinov at gmail.com
Sat Jun 20 13:29:43 UTC 2020


On Saturday, 20 June 2020 at 13:07:41 UTC, Paul Backus wrote:
> On Saturday, 20 June 2020 at 12:42:01 UTC, Stanislav Blinov 
> wrote:
>> On Saturday, 20 June 2020 at 10:43:41 UTC, Paul Backus wrote:
>>
>>> Also, switch from `void popFront()` to `typeof(this) rest`, 
>>> so that we can have `const` and `immutable` ranges.
>>
>> *Switch* is probably too restrictive. For a given range a 
>> `popFront` may be more efficient than a `range = range.rest`. 
>> Making `rest` a valid range primitive though, and using where 
>> appropriate - that'd be awesome.
>
> For non-forward ranges, there's no promise that the original 
> range (or any copies of it) will remain valid after calling 
> `rest`, so you can always implement `rest` like this:
>
>     auto rest() {
>         this.popFront;
>         return this;
>     }

For sure. I'm just pointing out that *switching* to `rest` isn't 
a likely way to go. I.e. that would've implied dropping the use 
of popFront altogether :) *Adopting* `rest` - yes, +100%.


More information about the Digitalmars-d mailing list