> I think this is a very particular case I disagree. Swift has the concept of a range all over the place and this is a fundamental range operation.
> As you pointed out this already can be implemented using resources already available in the language when needed. Right. A lot of things in the standard library can be implemented using resources already available, it's about the ergonomics. On Sat, May 21, 2016 at 1:44 PM, Leonardo Pessoa <[email protected]> wrote: > Adam, I think this is a very particular case and not something that needs > to be added to the language. As you pointed out this already can be > implemented using resources already available in the language when needed. > > > > On 21 May 2016 at 17:22, Adam Nemecek via swift-evolution < > [email protected]> wrote: > >> Hello, >> >> I think that Swift could use the 'double modulo' operator which is for >> example in CoffeeScript (some discussion can be found here >> https://github.com/jashkenas/coffeescript/issues/1971). >> >> This operator, unlike normal modulo, takes sign from the divisor, not the >> dividend e.g. -10 % 3 == -1, but -10 %% 3 == 2. >> >> In practice, this operator is useful for 'cyclical' indexing. For >> example, it would be useful for calculating the real index into a >> collection when we are using an index outside of the range of valid indices >> and could be used to index into a collection using a negative index à la >> Python and Ruby (where [1,2,3,4][-1] == 4). >> >> >> The implementation would probably be something along these lines: >> >> infix operator %% { >> associativity left >> precedence 150 >> } >> >> func %%<T: IntegerArithmeticType>(lhs:T, rhs:T) -> T { >> return (lhs % rhs + rhs) % rhs >> } >> >> If accepted, this could be later incorporated into a method or operator >> that works directly with collections using their count property. >> Maybe the syntax could be something like [1,2,3,4] %% -1 == 4. >> >> Ideas, suggestions? >> >> _______________________________________________ >> swift-evolution mailing list >> [email protected] >> https://lists.swift.org/mailman/listinfo/swift-evolution >> >> >
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
