> On Apr 9, 2016, at 5:58 PM, Haravikk via swift-evolution
> <[email protected]> wrote:
>
>
>> On 9 Apr 2016, at 10:50, Xiaodi Wu <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>> But, ranges are useful for more than just stride, and so I would say it
>> doesn't make sense to have an intrinsic direction for Range, which pointedly
>> has lowerBound and upperBound but not start and end. For sample, there
>> shouldn't be (0...9).contains(1) and (9...0).contains(1).
>
> While I can appreciate that, I wonder if it’s really that important that 0…9
> and 9…0 are identical? As long as we can be clear on which direction of range
> we want to generate (so probably still need two new operators), can tell what
> the direction is, and can convert between them if we need to for some reason
> (reverse should be fine for that?), then I think we’re okay.
>
> i.e- 9 … 0 would still cause an error at compile or run-time, we’d have some
> other operator for doing that, not sure what, plus 9 ..> 0, with both
> explicitly creating ranges in the reverse direction to avoid mistakes with
> the order or for computed indices. When it comes down to it the current Range
> has an implicitly forward direction, so I don’t see the problem with having
> the same in reverse personally.
>
>
> I dunno, at the very least we might want to consider overloading the striding
> method as .striding(forwardBy:) and .striding(backwardBy:) or something
> similar, each taking a positive value of some kind to help avoid mistakes in
> cases where the stride size is computed rather than constant, this would make
> it more explicit at least.
I can’t imagine any scenario in which getting the step's sign wrong wouldn’t
just be a typo. Why not just assign it the correct sign during the init
function?
(0 ... 6).striding(by: 2) // [0, 2, 4, 6], end > start, so stride = by
(6 ... 0).striding(by: 2) // [6, 4, 2, 0], start > end, so stride = -by
(OTOH, I don’t understand why 6…0 is currently a crash, rather than the, IMHO,
obviously intended sequence of “6,5,4,3,2,1,0”, so maybe I’m not the best
person to ask)
- Dave Sweeris
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution