[swift-evolution] Sparse (fixed-size) array literal syntax

Jaden Geller jaden.geller at gmail.com
Fri Jun 2 04:46:58 CDT 2017


Comments inline.

> On Jun 2, 2017, at 2:38 AM, Daryle Walker <darylew at mac.com> wrote:
> 
> 
>> On Jun 2, 2017, at 4:06 AM, Jaden Geller <jaden.geller at gmail.com> wrote:
>> 
>> I don’t know if you’re aware, but you can extend arbitrary nominal types with literal syntax.
>> 
>> ```
>> extension FixedSizedArray: ExpressibleAsDictionaryLiteral { … }
>> ```
>> 
>> Nothing special needs to be done on the implementation side to make this possible. If fixed sized arrays are not nominal types (like tuples, unlike `Array`s), then you will only be able to give this sugar to types that wrap them, not the type itself (w/o special support).
> 
> I don’t think that’ll work with the “where” clauses and “default” values in the new syntax.

I explained point-by-point which of these would be possible. If you reference the original message, I stated that the “where” sugar could instead be expressed with a lambda function. Personally, I’m against adding this new “where" sugar to the language, especially since the alternative seems no worse. I do think the “default” sugar is a good idea (as I stated there as well), but I don’t think it must be considered with fixed length arrays. It seems like an entirely additive and orthogonal feature.

> 
>> What’s the discussion on enhanced array and dictionary literals? I think I missed that.
> 
> This is the discussion. I’m asking if this “enhanced array” syntax I just came up with would interfere with the existing dictionary syntax from a parsing perspective.

I see. The first two cases (which are just normal dictionary syntax) are already possible. I don’t know about the third “where” case, but I don’t think it’s necessary. The 4th case seems possible since the keyword “default” cannot be used as an identifier.

>> Daryle Walker
> Mac, Internet, and Video Game Junkie
> darylew AT mac DOT com 
> 

Cheers,
Jaden Geller


More information about the swift-evolution mailing list