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

Reply via email to