chunkBy array at compile time

Steven Schveighoffer schveiguy at gmail.com
Wed Dec 19 18:19:28 UTC 2018


On 12/19/18 12:20 PM, H. S. Teoh wrote:
> On Wed, Dec 19, 2018 at 10:38:06AM -0500, Steven Schveighoffer via Digitalmars-d-learn wrote:
> [...]
>> Looking at the code for chunkBy, it seems to me that the
>> implementation is quite complex for what in my head should be a simple
>> wrapper...
> [...]
> 
> It was originally a simple wrapper when I first submitted it, but Andrei
> requested to use RefCounted in order to work around the subrange
> traversal problem. I.e., in the original implementation, the underlying
> range traversed twice, once when each subrange is consumed, and once
> when you call popFront on the outer range. Having RefCounted allows us
> to retain a reference to the original range so that subranges will also
> advance the underlying range as seen by the outer range, thereby
> eliminating calling popFront on the underlying range twice per element.

I see, that does pose an issue, especially if you aren't traversing it 
in order. Communicating back to the "outer" range where the traversal 
should stop requires having a reference to it in the subrange.

However, in terms of a random-access range, or even an array, it should 
be pretty straightforward to... oh wait, these are narrow strings. 
nevermind.

-Steve


More information about the Digitalmars-d-learn mailing list