[swift-evolution] [Pitch] New Version of Array Proposal

David Sweeris davesweeris at mac.com
Sun Jul 23 22:54:01 CDT 2017


> On Jul 23, 2017, at 8:32 PM, Taylor Swift <kelvin13ma at gmail.com> wrote:
> 
>> On Sun, Jul 23, 2017 at 5:48 PM, David Sweeris <davesweeris at mac.com> wrote:
>> 
>>> On Jul 23, 2017, at 12:18, Taylor Swift <kelvin13ma at gmail.com> wrote:
>>> 
>>>> On Sun, Jul 23, 2017 at 2:21 PM, David Sweeris <davesweeris at mac.com> wrote:
>>>> 
>>>>> On Jul 23, 2017, at 09:08, Taylor Swift <kelvin13ma at gmail.com> wrote:
>>>>> 
>>>> 
>>>>> let fsa:[2 * Int] = [2 * 5, 3] // [10, 3] ???
>>>> 
>>>> Correct. If you wanted a multidimensional array, that'd be written "let nestedFSA: [2*[5*Int]]". Or, speculating a bit, I suppose maybe "let nestedFSA: [[5*Int]*2]", if we wanted there to be a column-major option. IMHO all those read better than this proposal's syntax.
>>>> 
>>>> 
>>> 
>>> No, what I’m saying is does the phrase “[2 * 5, 3]” mean a fixed size array of length two and with the elements 5 and 3, or a flexible sized array with two elements 10 and 3? This is v confusing and difficult to read, especially when you have actual multiplications going on such as 
>>> 
>>> let fsa:[2 * Int] = [2 * 3 * 5, 3] // [15, 3] ???
>> 
>> That's... huh? To me, "[2 * 3 * 5, 3]" should obviously evaluate to "[30, 3]". How are you getting that "[2*5*3, 3]" could be a 2-element FSA containing 15 and 3? Are you suggesting that instead of "[value * value * value, value]", it could be parsed as "[modifier value * value, value]" (with `modifier` being "2 *")? To me, that syntax would strongly suggest that the modifier only applies to the first element of the array, which would mean the only other option for parsing it would be equivalent to "[[3, 5], 3]", which is neither a match for fsa's type, nor a semantically valid array (the elements have to be the same type), nor a syntactically valid array (the nested array in the first element is missing its "[]").
>> 
> 
> Well, that is the syntax you’re proposing right? What comes on the left of the asterisk is the FSA dimensions, and what comes to the right is the FSA elements. 

No, the type of the FSA's elements is what comes to the right: "[count * Type]". I don't recall any discussion around the value side of things, so I'd guess they would've just used the existing array literal syntax, "let fsa: [2*[2*Int]] = [[0, 1], [2, 3]]".

- Dave Sweeris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170723/034b2d5c/attachment.html>


More information about the swift-evolution mailing list