Run loop modes are named by string, and as you can see in your link, comparisons of run loop modes are by their raw value--i.e. by string. While it's of course sensible to have a total ordering for strings, I'm skeptical that you would typically want to get the "maximum" of two strings, and I'm not aware of a use case for clamping a string to a range of strings.
If you're really doing that in your code, you should be aware that the default ordering for String (or was it just NSString?--my memory is hazy now) behaves differently on OS X and Linux, at least as of a few months ago. You really should be using string-specific comparison methods (either case-sensitive or not) on appropriately normalized strings, in my opinion. On Thu, Sep 1, 2016 at 10:34 PM Karl <[email protected]> wrote: > > On 31 Aug 2016, at 15:53, Xiaodi Wu <[email protected]> wrote: > > Comparable makes semantic guarantees about how values of conforming types > might be ordered. You don't need `min` or `max` for that to be useful, > since it's trivial to implement using comparison operators. > > Basic numeric types require compiler magic and thus belong in the standard > library. Likewise, dictionaries have special syntactic sugar and have uses > for types that can guarantee comparable semantics. A decimal type, though, > can be implemented outside the standard library and probably would belong > in a math library. Likewise mathematical constants such as e. I think min > and max fall into the latter category. > > On Wed, Aug 31, 2016 at 8:10 AM Karl <[email protected]> wrote: > >> >> > On 30 Aug 2016, at 10:18, Xiaodi Wu via swift-evolution < >> [email protected]> wrote: >> > >> > As an additive proposal, I don't think this would be in scope for the >> current phase of Swift 4. >> > >> > Looking forward, though, I'm not sure this belongs in the standard >> library. In general, my understanding is that Swift's standard library is >> deliberately small, and that the criteria for additions are that it's >> widely used *and* also non-trivial for the user to write correctly. I've >> had to use clamping, obviously, but it's a trivial one-liner that is hard >> to write incorrectly. If anything, I'd be in favor of removing max and min >> into a future math library outside the standard library. >> >> min & max (and clamping) are hardly “math” operations. They operate on >> Comparables, so you can apply them to more abstract things than just >> numbers. >> >> Otherwise, you might as well put Comparable and all standard numeric >> types like Int and Float in a math library, too. > > > Concrete example I just happened to run across: Foundation’s RunLoopMode > conforms to Comparable. It is entirely possible that you may get a > collection of RunLoopModes and wish to find the min/max or clamp to a > particular mode. > > > https://github.com/apple/swift-corelibs-foundation/blob/master/Foundation/NSRunLoop.swift >
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
