[phobos] Slices of ranges

Lars Tandle Kyllingstad lars at kyllingen.net
Wed Feb 2 07:31:30 PST 2011


On Wed, 2011-02-02 at 15:05 +0100, Simen Kjaeraas wrote:
> Lars Tandle Kyllingstad <lars at kyllingen.net> wrote:
> 
> > A while ago I fixed issue 5052, but doing so I unwittingly broke David's
> > earlier fix for issue 4464.  I believe I have now fixed both issues (not
> > committed to main Phobos repo yet):
> >
> > https://github.com/kyllingstad/phobos/commit/3948e3f61403bd7618913c36959158018970011d
> >
> > While fixing this, I noted that Take!R simply aliases to R when R is a
> > type that supports slicing.  This assumes that the slice has the same
> > type as the slicee(?), which doesn't have to be the case -- at least as
> > far as the compiler or hasSlicing!() are concerned.
> >
> > It is easy to fix in Take, but I've now discovered that the same
> > assumption is made in a lot of places: Retro, Stride, Chain... the list
> > goes on.  Just do a search for hasSlicing, or look for things like
> >
> >     _input = _input[i .. j];
> >
> > Fixing it everywhere is likely to be a lot of work.  Do you think it is
> > worth it, or is this a tiny corner case?
> 
> IMO, ranges that support slicing should return their own type as a slice. I
> believe this is always the case in existing ranges, and that it's a good  
> idea
> in general.

While I don't necessarily disagree with this idea, I would like to point
out that there was, at one point, serious discussion about whether
built-in array slices should be a separate type.  (Remember T[new]?)

-Lars



More information about the phobos mailing list