[swift-evolution] [Pitch] 'Double modulo' operator

Leonardo Pessoa me at lmpessoa.com
Sat May 21 15:44:01 CDT 2016


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 at 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 at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160521/5cfa5317/attachment.html>


More information about the swift-evolution mailing list