Why splitter() doesn't work?

Jonathan M Davis jmdavisProg at gmx.com
Sun Oct 14 16:24:28 PDT 2012


On Monday, October 15, 2012 01:11:28 Mehrdad wrote:
> How are you supposed to split a range that doesn't support
> slicing though?
> 
> You can't just call array() because it might be too big to be
> reasonable for fitting it into memory...

If you're splitting on an element, slicing isn't necessary. It's only 
splitting on a range that requires slicing. However, because splitter is lazy, 
I would think that it would be perfectly possible to define it such that it 
didn't need slicing. It would still need a forward range (for the same reason 
that find requires forward ranges if it's not looking for a single element), 
but I would think that you could define it with just forward ranges. Worst 
case, the result would have to be a range over Take!Range rather than over 
slices of Range, and that's basically what infinite ranges have to do when 
slicing anyway. So, unless I'm missing something, I think that splitter is 
currently being overly restrictive in its implementation.

- Jonathan M Davis


More information about the Digitalmars-d mailing list