[swift-evolution] TrigonometricFloatingPoint/MathFloatingPoint protocol?

Taylor Swift kelvin13ma at gmail.com
Mon Jul 31 12:54:02 CDT 2017


Isn’t the point of standard inlineable library module to prevent the need
to copy and paste code like this into every project? Currently I have a
“math.swift” file I copy and paste into all of my projects, and since I
occasionally update it, there exists about 15 different versions of it
floating around, so I know this is not a sustainable practice.

On Mon, Jul 31, 2017 at 1:45 PM, Hooman Mehr <hooman at mac.com> wrote:

> I prefer an approach that preserves how I am used to seeing math
> expressions. I use this myself:
>
> protocol FloatingPointMath: FloatingPoint
> {
>     static func sqrt(_ value: Self) -> Self
>
>     static func sin(_ value: Self) -> Self
>     static func cos(_ value: Self) -> Self
>     static func tan(_ value: Self) -> Self
>     static func asin(_ value: Self) -> Self
>     static func acos(_ value: Self) -> Self
>     static func atan(_ value: Self) -> Self
>
>
>     static func ln(_ value: Self) -> Self
>     static func log(_ value: Self, base: Self) -> Self
>     static func pow(_ value: Self, exponent:Self) -> Self
>     static func exp(_ value: Self) -> Self
> }
>
> It does not pollute the global namespace and gives nice contextual
> auto-completion.  And I don’t want it in the standard library: I only add
> the file when I need it. (it is not a separate module for optimization
> reasons).
>
> On Jul 31, 2017, at 10:29 AM, Taylor Swift via swift-evolution <
> swift-evolution at swift.org> wrote:
>
>
>
> On Mon, Jul 31, 2017 at 1:23 PM, Adrian Zubarev <
> adrian.zubarev at devandartist.com> wrote:
>
>> I’m not sure how I would feel about this. To be honest I’d avoid such
>> additional changes from the stdlib, because they really don’t belong there.
>> Instead some `Math` module/package would be a better fit than clustering
>> everything into stdlib until we end up also adding UI stuff.
>>
>> Furthermore, I don’t think a function would make any sense here. It
>> really should be a computed property.
>>
>>
>>
> I think a standard Math module would be a good idea, but only if it
> benefits from the same inlining and specialization as the standard library.
> Also squareRoot() should be moved to the Math module if it is ever created.
>
>
>> Am 31. Juli 2017 um 19:03:49, Taylor Swift via swift-evolution (
>> swift-evolution at swift.org) schrieb:
>>
>> How would people feel about adding a protocol
>>
>> protocol MathFloatingPoint:FloatingPoint
>> {
>>     func sin() -> Self
>>     func cos() -> Self
>>     func tan() -> Self
>>     func asin() -> Self
>>     func acos() -> Self
>>     func atan() -> Self
>>
>>     func ln() -> Self
>>     func log(base:Self) -> Self
>>     func pow(exponent:Self) -> Self
>>     func exp() -> Self
>> }
>>
>> to the standard library? Float and Double would then be made to conform
>> by default using Swift implementations instead of having to import Glibc /
>> Darwin and writing the extensions, depending on platform.
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>
>>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170731/5e89b8e8/attachment.html>


More information about the swift-evolution mailing list