<div dir="ltr"><div style="font-size:13px">Based on much of the discussion regarding removing C-style for-loops, I&#39;d like to propose a discussion on revamping how range works in Swift. The lack of a reverse range operator and the fact and the range operator and stride() seem to do a lot of the same work have made me wonder why there isn&#39;t merely a range() function, as in Python. </div><div style="font-size:13px"><br></div><div style="font-size:13px">I believe this would be easier for newcomers to learn, remove the need for stride() (though there are probably use cases for stride() I don&#39;t know about, I haven&#39;t used it too much), and actually be more clear than ..&lt; and ...</div><div style="font-size:13px"><br></div><div style="font-size:13px"><br></div><div style="font-size:13px">Here are some examples of how it could work:<br></div><div style="font-size:13px"><br></div><div style="font-size:13px">range(10) // equivalent to 0..&lt;10</div><div style="font-size:13px">range(-1, to: 10) // equivalent to -1..&lt;10</div><div style="font-size:13px">range(10, through: 0) equivalent to (0...10).reverse()</div><div style="font-size:13px">range(0, through: 10, by: 2) // equivalent to <span style="background-color:rgba(255,255,255,0)"><span style="font-style:inherit;font-variant:inherit;margin:0px;padding:0px;border:0px;line-height:inherit;vertical-align:baseline">0.stride</span><span style="font-style:inherit;font-variant:inherit;margin:0px;padding:0px;border:0px;line-height:inherit;vertical-align:baseline">(through</span><span style="font-style:inherit;font-variant:inherit;margin:0px;padding:0px;border:0px;line-height:inherit;vertical-align:baseline">:</span><span style="font-style:inherit;font-variant:inherit;margin:0px;padding:0px;border:0px;line-height:inherit;vertical-align:baseline"> </span><span style="font-style:inherit;font-variant:inherit;margin:0px;padding:0px;border:0px;line-height:inherit;vertical-align:baseline">10</span><span style="font-style:inherit;font-variant:inherit;margin:0px;padding:0px;border:0px;line-height:inherit;vertical-align:baseline">,</span><span style="font-style:inherit;font-variant:inherit;margin:0px;padding:0px;border:0px;line-height:inherit;vertical-align:baseline"> </span><span style="font-style:inherit;font-variant:inherit;margin:0px;padding:0px;border:0px;line-height:inherit;vertical-align:baseline">by</span><span style="font-style:inherit;font-variant:inherit;margin:0px;padding:0px;border:0px;line-height:inherit;vertical-align:baseline">:</span><span style="font-style:inherit;font-variant:inherit;margin:0px;padding:0px;border:0px;line-height:inherit;vertical-align:baseline"> </span><span style="font-style:inherit;font-variant:inherit;margin:0px;padding:0px;border:0px;line-height:inherit;vertical-align:baseline">2</span><span style="font-style:inherit;font-variant:inherit;margin:0px;padding:0px;border:0px;line-height:inherit;vertical-align:baseline">)</span></span></div><div style="font-size:13px"><br></div><div style="font-size:13px">Or, to avoid a global function, .range() should probably be a function like stride, but with more features (equivalent to above)</div><div style="font-size:13px"><br></div><div style="font-size:13px">10.range()</div><div style="font-size:13px">-1.range(to: 10)</div><div style="font-size:13px">10.range(through: 0)</div><div style="font-size:13px">0.range(through: 10, by: 2)</div><div style="font-size:13px"><br></div><div style="font-size:13px">Would love thoughts on why this is good or bad, and if it&#39;s worth creating an actual proposal. </div><div style="font-size:13px"><br></div><div style="font-size:13px">Regards,</div><div style="font-size:13px"><br></div><div style="font-size:13px">Kyle</div><div><br></div></div>