>   /// The quotient of `self` dividing by `rhs`.
>   //  Arithmetic provides a default implementation of this method in terms
>   //  of the mutating `divide` operation.
>   @warn_unused_result
>   func divided(by rhs: Self) -> Self
> 
>   /// Divides `self` by `rhs`.
>   mutating func divide(by rhs: Self)


When dealing with integer arithmetic, I often find useful a `divmod` function 
which produces a (quotient, remainder) pair.
It could be argued that such a pair is the primary result of division on 
integers. It would be great to have such a function included in the design.

> /// SignedArithmetic protocol will only be conformed to by signed numbers,
> /// otherwise it would be possible to negate an unsigned value.
> ///
> /// The only method of this protocol has the default implementation in an
> /// extension, that uses a parameterless initializer and subtraction.
> public protocol SignedArithmetic : Arithmetic {
>   func negate() -> Self
> }

It might make sense to also have a

public protocol InvertibleArithmetic : Arithmetic {
  func inverted() -> Self
}

FloatingPoint would conform to this protocol, returning 1/x, while integer 
types would not.

--
Nicola


_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to