[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