> On Mar 19, 2016, at 4:10 PM, Gavin Eadie via swift-evolution > <[email protected]> wrote: > Finally, I'll note that when SE-0007 was being considered, I asked how I > might do the second case > (I needed to span Doubles from X to Y in jumps of Z. The best answer (of > several), at that time, was: > > extension ClosedInterval where Bound: Strideable { > func by(n: Bound.Stride) -> StrideThrough<Bound> { > return start.stride(through: end, by: n) > } > } > > and
Right now, I believe floating point strides are broken. I started working on a proposal to address this by moving them into their own stride implementations instead of genericizing them with integers. (https://github.com/apple/swift-evolution/blob/master/proposals/0050-floating-point-stride.md <https://github.com/apple/swift-evolution/blob/master/proposals/0050-floating-point-stride.md>) After talking with Dave Abrahams, it looks like he's going to be able to address the issue as a part of his indexing model work. I have withdrawn the proposal. Spanning doubles from X to Y in jumps of Z is particularly problematic in traditional for loops because of the errors accumulated at each iteration. There are more details about this issue in the proposal link. Swift has many use-cases where we don't really mind if there are minor calculation errors because the real-world experience of the user doesn't change (did that timer fire 0.0001 seconds early?), other use-cases that are inherently decimal in nature (currency, many graphing applications, where 0.1 and 0.25 matter), and still yet others where calculation errors matter but the numbers aren't nicely decimal (trigonometry, among others). Swift should support these all. -- E
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
