Proposal for SentinelInputRange
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Thu Feb 28 07:38:04 PST 2013
On 2/28/13 6:29 AM, Jonathan M Davis wrote:
> There's tons of stuff that's fine with forward ranges (though I seriously
> question the viability of pure input ranges given how insanely limiting is to
> be unable to save their state), but there's also plenty of stuff that needs
> random access, and if you _really_ care about speed, there's a decent chance
> that you need random access (if nothing else, to be able to pop off multiple
> elements at a time). That doesn't necessarily mean that you're using an array,
> but odds are whatever you're using wraps an array if it isn't one. I don't
> think that there's much of anything which is random access without having an
> array or pointer underneath the hood. Reading from a file, I'd be very inclined
> to use something like MmFile or reading the whole file into an array rather
> than trying to wrap in something that's a pure input range. They're just too
> limiting.
I think this (and the long, long, long text above) is missing a point.
The necessity here is defining new range primitives (such as lookahead),
not force the existing range notions onto the needed functionality.
Again:
1. Port the blessed lexer as is to D already
2. Figure out what abstraction is needed for lexer's input
3. Reify that abstraction as an existing range type, a variation on an
existing range type, or a new range type
Talking abstraction without concrete is a poor approach. Concrete first,
abstraction extracted from it.
Andrei
More information about the Digitalmars-d
mailing list