[swift-evolution] Feature proposal: Range operator with step

Xiaodi Wu xiaodi.wu at gmail.com
Tue Mar 29 19:03:51 CDT 2016


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 <
swift-evolution at swift.org> wrote:

>
> on Mon Mar 28 2016, Dave Abrahams <swift-evolution at swift.org> wrote:
>
> > on Mon Mar 28 2016, Erica Sadun <swift-evolution at swift.org> wrote:
> >
> >>> On Mar 28, 2016, at 3:54 PM, Dave Abrahams via swift-evolution <
> swift-evolution at swift.org> wrote:
> >>>
> >>>
> >>> on Mon Mar 28 2016, Erica Sadun <swift-evolution at swift.org> wrote:
> >>>
> >>
> >>>>> On Mar 28, 2016, at 3:25 PM, Dave Abrahams via swift-evolution
> >>>>> <swift-evolution at swift.org> wrote:
> >>>>>
> >>>>>
> >>>>> on Mon Mar 28 2016, Xiaodi Wu
> >>>>
> >>>>> <swift-evolution at swift.org
> >>>>> <mailto:swift-evolution at swift.org>>
> >>>>> 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
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160330/b0017fb1/attachment.html>


More information about the swift-evolution mailing list