> On Apr 6, 2016, at 2:17 PM, Dave Abrahams via swift-evolution > <[email protected]> wrote: >> Guidance: >> >> When using odd integer literals to produce an even number sequence, >> prefer the `...` operator to the `..<` operator and change your ending >> literal to an even number. > > I don't think you can fix counterintuitive behavior with guidance. > > (1..<199).striding(by: -2) is the first way I'd reach for to express > 197, 195, ..., 3, 1
Yes, but you can with warnings and fixits. * The compiler should issue a warning for any use of (n..<m).striding(by: v | v < 0) | n, m, v : Integer with a fixit of "replace (n..<m) with (n...m - 1)" regardless of whether n or m is known at compile time * If v cannot be known at compile time, I think the compiler should always prefer ... to ..<. * The compiler should not allow (n..<m).striding(by: v | v < 0) | n, m, v: floating point types where v is known at compile time to be a negative constant. There should also be a runtime precondition that raises a fatal error should a negative v be used with a half-open interval. -- E
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
