Sent from my iPad
> On Aug 2, 2017, at 3:43 PM, Xiaodi Wu via swift-evolution
> <swift-evolution@swift.org> wrote:
>
>
>> On Wed, Aug 2, 2017 at 17:37 Nicolas Fezans <nicolas.fez...@gmail.com> wrote:
>> I think that the items mentioned earlier in the list (just reminded below)
>> should not all be treated equally.
>>
>> - RNG and cryptography library (CryptoSwift could be a good base for this)
>> - Generic Math library/Vector library
>> - Basic data structures (Tree, Balanced Tree, Heap, Queue, SkipList, graphs,
>> etc)
>> - Modern DateTime library
>> - Modern String processing toolkit
>> - 2D Graphics library (similar to cairo)
>> - Windowing/UI library
>>
>> By that I mean that I see at least one distinction to make between:
>>
>> a) the libraries that would make Swift and the programmer experience with
>> these libraries under Swift significantly better if they are (or at least
>> feel) deeply integrated in the language (for instance with associated syntax
>> / syntax sugar)
>> and
>> b) those that would not really benefit from such an integration to the
>> language.
>>
>> For me a core math library, clearly belongs to category a)
>> I am of course not talking about a syntax sugar to call a sin or cos
>> function, but rather to manipulate other objects such as N-dimensional
>> matrices, defining maths functions that can take such matrices as argument
>> e.g. sin(A) with A as matrix produces a matrix of the same size where all
>> elements are the sinus values of the elements of A (sorry but things like
>> this calling map() with 'sin' looks quite ugly for scientists).
>> Such a good math syntax should be compact enough to have complete equations
>> looking "close enough" to the maths equations you could have written in a
>> LaTeX or Word documentation of your scientific code. IMO a well integrated
>> swift core math library should feel a Julia or Matlab code (while still
>> having the power of Swift in terms of speed and modern programming
>> paradigms) instead of looking and feeling like 'numpy'. But the latter is
>> what you get if you just make a math library with no integration to the
>> language syntax, operators, and basic functions.
>
> I agree that if this would require compiler support, then it needs to be part
> of the standard library. However, I don't see anything about what you
> describe that cannot be supported as a third-party library.
Getting the syntax right could possibly require some compiler changes. Maybe.
Depends on what "right" means. Declaring a variable, x, to be "the set of all
real numbers such that x*sin(x) is an integer" using syntax like this, "let x =
{x ∈ ℝ | x * sin(x) ∈ ℕ}", would be neat (I'm a bit hazy on my set notation...
that might not actually be correct).
We're actually not that far off from that, compiler-wise, I mean. Aside
defining the relevant types, operators, and identifiers, that exact syntax
pretty much just requires the compiler to allow using a certain types of
variables in their own declaration and either one heck of an
`ExpressibleByClosureLiteral` protocol, or improvements to the type inference
engine.
- Dave Sweeris
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution