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

Xiaodi Wu xiaodi.wu at gmail.com
Wed Aug 31 08:53:04 CDT 2016


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> wrote:

>
> > On 30 Aug 2016, at 10:18, Xiaodi Wu via swift-evolution <
> 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160831/f8c60c99/attachment.html>


More information about the swift-evolution mailing list