std.v2020.algorithm etc[ WAS: Is run.d going to be expand for runtime and the phobos library?]
Paul Backus
snarwin at gmail.com
Sat Jun 20 14:36:14 UTC 2020
On Saturday, 20 June 2020 at 13:29:43 UTC, Stanislav Blinov wrote:
> 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%.
By "switching", I just mean that `std.v2.range.isInputRange`
would only check for `rest`, not `popFront`, and that new code
would be free to only implement `rest`. Naturally, we would also
provide free-function versions of `rest` and `popFront` for
compatibility between the two APIs.
More information about the Digitalmars-d
mailing list