Range documentation

Manu turkeyman at gmail.com
Sat Mar 23 21:31:44 PDT 2013


On 24 March 2013 14:06, Jonathan M Davis <jmdavisProg at gmx.com> wrote:

> On Sunday, March 24, 2013 13:55:26 Manu wrote:
> > I'd like to clarify some conflicts I've encountered.
> >
> > TDPL talks about ranges, it mentions random access ranges requiring these
> > functions:
> >
> >   T at(int i)
> >   Range slice(int x, int y)
>
> This is not used by Phobos. I don't know why TDPL uses those. They are not
> supported at all and AFAIK never have been.
>

My mistake; I stumbled upon an article written in 'CDJ#++', which I thought
was an exert from TDPL (mixed my browser tabs up) >_<

> Also, forward ranges require:
> >
> >   Range save()
> >
> > But there is also this function:
> >
> >   Range opSlice()
> >
> > With no args, handles the syntax 'range[]'. save() and opSlice() with no
> > args would appear to be identical.
> > Why have both? Which will be used in which cases?
>
> Range opSlice()
>
> is never used by ranges. It's only used by containers when you want to get
> a
> range for them.
>

So what's the difference between save() and opSlice() though? They appear
to be identical regardless... is save() redundant?


If you want to know exactly which functions are supported by ranges, and the
> documentation isn't clear enough


This is my point, _there is no documentation_.



> just look at the definitions for the range
> traits in std.range - isInputRange, isForwardRange, etc. They specify
> exactly
> what a type must do to qualify as each type of range.
>

I have been, but since I'm just digging, and have
no authoritative reference, I am easily confused when I see conflicting or
apparently redundant code.
A D user shouldn't have to do this. I encourage a section under Language ->
Language Reference on dlang.org, to anyone who is an authority on the topic.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20130324/bc3b8e0e/attachment-0001.html>


More information about the Digitalmars-d mailing list