[swift-evolution] [Idea] Add `bounds` function to standard library

Karl razielim at gmail.com
Thu Sep 1 22:34:50 CDT 2016


> On 31 Aug 2016, at 15:53, Xiaodi Wu <xiaodi.wu at gmail.com> 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 <razielim at gmail.com <mailto:razielim at gmail.com>> wrote:
> 
> > On 30 Aug 2016, at 10:18, Xiaodi Wu via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160902/5daad24c/attachment.html>


More information about the swift-evolution mailing list