Transience of .front in input vs. forward ranges

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Nov 5 22:49:26 PST 2012


On 11/6/12 4:36 AM, H. S. Teoh wrote:
> Hmm. Another idea just occurred to me. The basic problem here is that we
> are conflating two kinds of values, transient and persistent, under a
> single name .front. What if we explicitly name them? Say, .copyFront for
> the non-transient value and .refFront for the transient value (the
> names are unimportant right now, let's consider the semantics of it).

We could transfer that matter to the type of .front itself, i.e. define 
a function copy(x) that returns e.g. x for for string and x.dup for 
char[] etc. There would be problems on e.g. defining copy for structs 
with pointer and class reference fields etc.

One quite simple approach would be to define (on the contrary) 
.peekFront, which means "yeah, I'd like to take a peek at the front but 
I don't plan to store it anywhere". That would entail we define eachLine 
etc. to return string from .front and char[] from .peekFront, and 
deprecate byLine.


Andrei


More information about the Digitalmars-d mailing list