Relatedly, while you're tackling this big revision: I've tried to play around with what it would take to write a generic non-error-accumulating striding method, and afaict, it would be enormously cleaner if Strideable types are guaranteed to have + and * (well, Strideable.Stride needs *, to be more accurate), since the iterator needs to be able to compute end = start + iteration * stride. Is that going to be exposed somewhere in the cascade of numeric protocols that culminate in Strideable? On Mon, Mar 28, 2016 at 7:45 PM Dave Abrahams via swift-evolution < [email protected]> wrote:
> > on Mon Mar 28 2016, Dave Abrahams <[email protected]> wrote: > > > on Mon Mar 28 2016, Erica Sadun <[email protected]> wrote: > > > >>> On Mar 28, 2016, at 3:54 PM, Dave Abrahams via swift-evolution < > [email protected]> wrote: > >>> > >>> > >>> on Mon Mar 28 2016, Erica Sadun <[email protected]> wrote: > >>> > >> > >>>>> On Mar 28, 2016, at 3:25 PM, Dave Abrahams via swift-evolution > >>>>> <[email protected]> wrote: > >>>>> > >>>>> > >>>>> on Mon Mar 28 2016, Xiaodi Wu > >>>> > >>>>> <[email protected] > >>>>> <mailto:[email protected]>> > >>>>> wrote: > >>>>> > >>>>>> Right, Countable could refine Strideable. I'm no expert on this, but > >>>>>> some cursory reading suggests that the analogous feature in C++ > simply > >>>>>> requires the type to have operator++ defined. Obviously, that won't > >>>>>> work for Swift 3.0... > >>>>> > >>>>> Hmm, instead of defining a new protocol (Countable), what if we just > use > >>>>> “Strideable where Stride : Integer” as a constraint? > >>>> > >>>> I like a differentiation between continuous and discrete things > >>>> although both can have ranges, membership, fences, > >>>> and a way to stride through them > >>> > >>> Strideable where Stride : Integer expresses just exactly that. Now if > I > >>> could only get the type-checker to cooperate... > >> > >> I am ridiculously excited about what you're doing there. > >> Looking forward to beautiful floating point strides if for no > >> other reason than I can point out how well they work for math > >> in comparison to traditional for;;loops, so maybe people will > >> stop burning semicolons on my lawn. > > > > The basics: > > > https://github.com/apple/swift/commit/a5c3c63c3d5d940f729c23aab342ea4d270d264a > > Hi Erica, > > After some consideration, while I want to see the smart > (x..<y).striding(by: z) stuff happen too, it's somewhat incidental to > the (already massive) project we're undertaking in this branch. Would > you like to take on the implementation and/or proposal? I'd be happy to > provide guidance. > > -- > Dave > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution >
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
