std.range.chunk without length

Stephan Schiffels stephan_schiffels at mac.com
Tue Feb 18 07:42:18 PST 2014


On Thursday, 13 February 2014 at 17:41:37 UTC, monarch_dodra 
wrote:
> On Thursday, 13 February 2014 at 14:45:44 UTC, bearophile wrote:
>> Stephan Schiffels:
>>
>>> It would be actually easy to implement chunks without the 
>>> "save" function, by using an internal buffer, which would 
>>> however make this algorithm's memory burden linear in the 
>>> chunk size. Would that be acceptable?
>>
>> I think it's acceptable. But perhaps you need to add one more 
>> optional argument for the buffer :-)
>>
>> Bye,
>> bearophile
>
> Users andralex:
> https://github.com/D-Programming-Language/phobos/pull/1186
>
> And quickfur:
> https://github.com/D-Programming-Language/phobos/pull/1453
>
> Have submitted different algorithms for a similar problem: 
> Basically, bu being "2-dimensional lazy" (each subrange is 
> itself a lazy range). However, both come with their own 
> pitfalls.
>
> Andrei's still requires forward ranges. quickfur's doesn't, 
> and, arguably, has a simpler design. However, if I remember 
> correctly, it is also less efficient (it does double work). 
> Implementing Quickfur's solution in Chunks for input ranges 
> only could be a good idea.
>
> It *is* extra work, more code, more code to cover (that is 
> difficult to cover). I'm not sure we have the man power to 
> support such complexity: I was able to make chunks work with 
> forward ranges, but I still haven't even fixed Splitter yet! I 
> think that should take precedence.

Yeah, nevermind, I won't do it. I realised that you had good 
reasons to require a ForwardRange. Chunking really needs some 
sort of "save" implemented. And what I had in mind to make it 
work on File.byLine with a buffer is actually a hack that 
effectively adds "save" functionality to the InputRange… so I 
agree it's logically not reasonable to do it here.

Thanks anyway.
Stephan


More information about the Digitalmars-d-learn mailing list