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 <
swift-evolution@swift.org> 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
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to