[swift-evolution] [pitch] remove global sqrt<T: FloatingPoint>
Chris Lattner
clattner at apple.com
Mon Jul 11 17:55:15 CDT 2016
On Jul 11, 2016, at 3:52 PM, Stephen Canon <scanon at apple.com> wrote:
>>> I would also plan to provide this and other math.h-ish globals in a future (post swift 3) Math module.
>>
>> I’m very concerned with this. Why not do exactly the opposite? Remove the concrete operations from Darwin.C and replace it with a single generic one?
>>
>> The rationale for using global functions here is that they are “terms of art” in numerics nomenclature. If they aren’t, then we should consistently eradicate all the global operations:
>>
>> assert(Double.pi.sine == 0.0)
>>
>> Is this the direction you want to go?
>
> No, definitely not.
>
> I’m fine with placing a generic implementation in Darwin.C. I would include that as part of this change. Post Swift 3, we should also have a Swift math module that provides the usual sqrt<T: MathTypeOrWhatever>(_: T) operations.
>
> However, I’m not totally convinced we want every math operation we think of in the global namespace *by default*, and I’d like to avoid painting ourselves into a corner where sqrt( ) just sticks out like a sore thumb in the base stdlib for all time.
I’m not sure what problem you’re trying to solve. I think you agree that people should be able to write a generic function and use “sqrt(x)” where x is some FloatingPoint bound type, right? If so, is it just the concern about it being injected into every program that imports (e.g.) Foundation?
-Chris
More information about the swift-evolution
mailing list