<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 10 Apr 2016, at 11:17, Brent Royal-Gordon &lt;<a href="mailto:brent@architechies.com" class="">brent@architechies.com</a>&gt; wrote:</div><div class=""><br class=""><blockquote type="cite" class="">Why not just assign it the correct sign during the init function?<br class="">(0 ... 6).striding(by: 2) // [0, 2, 4, 6], end &gt; start, so stride = by<br class="">(6 ... 0).striding(by: 2) // [6, 4, 2, 0], start &gt; end, so stride = -by<br class=""></blockquote><br class="">One reason not to do it this way is that, if we extend `striding(by:)` to other collections, they will not be as easy to walk backwards through as this. You will have to do something like `collection.reversed().striding(by:)` which will be a hassle.</div></blockquote><br class=""></div><div>Any thoughts on the alternative I mentioned a little earlier to define overloads instead of positive/negative? i.e- you would have two methods, <font face="Menlo" class="">.striding(forwardBy:)</font> and <font face="Monaco" class="">.striding(backwardBy:)</font>. In addition to eliminating the use of a negative stride to indicate direction, this has the advantage that .striding(backwardBy:) can be defined only for types with a ReverseIndex or only for collections (as you can stride through a sequence, but only by going forward).</div><div><br class=""></div><div>This should also make documentation a bit clearer, otherwise you’ve got the caveat that to go backwards requires a negative value, but only if the type supports that, which a developer would then need to check. Instead it either has the backwardBy variant or not.</div><div><br class=""></div><div>I know that advance(by:) supports negative values, but this is actually something I wouldn’t mind seeing changed as well, as it has the same issues (passing a negative value in looks fine until you realise the type is a ForwardIndex only). It would also allow us to define Distance types that don’t support a direction, since this would be given by the choice of method called instead.</div><div><br class=""></div><div><br class=""></div><div>Of course I’d still like to be able to define 6 … 0 or whatever, but this would at least eliminate what I dislike about using negatives for direction.</div></body></html>