range.save
Joseph Rushton Wakeling via Digitalmars-d
digitalmars-d at puremagic.com
Fri Nov 27 04:06:01 PST 2015
On Friday, 27 November 2015 at 11:57:37 UTC, Jonathan M Davis
wrote:
> Well, you can have a pure input range which is lazy, but what
> you can't do is wrap it in another lazy range. A prime example
> would be something like
>
> auto first5 = range.take(5);
> range.popFront();
> range.popFront();
> // first5 now refers to elements 2 through 6 rather than 0
> through 4
Hmm well, I think it depends on how you approach the question of
what is "correct" there. If range is a RNG then that behaviour
could arguably be OK; the 5 numbers extracted from the RNG are
evaluated as you consume them, and that's all right.
This is where I'm wishing I knew Haskell better, because I'm
increasingly suspecting that InputRanges ought to be thought of
in much the same way as Haskell considers IO.
More information about the Digitalmars-d
mailing list