on Wed Apr 06 2016, Erica Sadun <[email protected]> wrote: > 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.
You can lessen the impact of any design choice by adding warnings and fixits, but I'm pretty sure it's better to make a choice that doesn't require them. -- Dave _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
