Relatedly, while you&#39;re tackling this big revision:<br><br>I&#39;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?<br><div class="gmail_quote"><div dir="ltr">On Mon, Mar 28, 2016 at 7:45 PM Dave Abrahams via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
on Mon Mar 28 2016, Dave Abrahams &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
<br>
&gt; on Mon Mar 28 2016, Erica Sadun &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt;&gt; On Mar 28, 2016, at 3:54 PM, Dave Abrahams via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; on Mon Mar 28 2016, Erica Sadun &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; On Mar 28, 2016, at 3:25 PM, Dave Abrahams via swift-evolution<br>
&gt;&gt;&gt;&gt;&gt; &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; on Mon Mar 28 2016, Xiaodi Wu<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt;&gt;&gt;&gt; &lt;mailto:<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Right, Countable could refine Strideable. I&#39;m no expert on this, but<br>
&gt;&gt;&gt;&gt;&gt;&gt; some cursory reading suggests that the analogous feature in C++ simply<br>
&gt;&gt;&gt;&gt;&gt;&gt; requires the type to have operator++ defined. Obviously, that won&#39;t<br>
&gt;&gt;&gt;&gt;&gt;&gt; work for Swift 3.0...<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Hmm, instead of defining a new protocol (Countable), what if we just use<br>
&gt;&gt;&gt;&gt;&gt; “Strideable where Stride : Integer” as a constraint?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I like a differentiation between continuous and discrete things<br>
&gt;&gt;&gt;&gt; although both can have ranges, membership, fences,<br>
&gt;&gt;&gt;&gt; and a way to stride through them<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Strideable where Stride : Integer expresses just exactly that.  Now if I<br>
&gt;&gt;&gt; could only get the type-checker to cooperate...<br>
&gt;&gt;<br>
&gt;&gt; I am ridiculously excited about what you&#39;re doing there.<br>
&gt;&gt; Looking forward to beautiful floating point strides if for no<br>
&gt;&gt; other reason than I can point out how well they work for math<br>
&gt;&gt; in comparison to traditional for;;loops, so maybe people will<br>
&gt;&gt; stop burning semicolons on my lawn.<br>
&gt;<br>
&gt; The basics:<br>
&gt; <a href="https://github.com/apple/swift/commit/a5c3c63c3d5d940f729c23aab342ea4d270d264a" rel="noreferrer" target="_blank">https://github.com/apple/swift/commit/a5c3c63c3d5d940f729c23aab342ea4d270d264a</a><br>
<br>
Hi Erica,<br>
<br>
After some consideration, while I want to see the smart<br>
(x..&lt;y).striding(by: z) stuff happen too, it&#39;s somewhat incidental to<br>
the (already massive) project we&#39;re undertaking in this branch.  Would<br>
you like to take on the implementation and/or proposal?  I&#39;d be happy to<br>
provide guidance.<br>
<br>
--<br>
Dave<br>
<br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div>