Let me clarify: I'm only talking about removing tuple element names from the 
*pattern* grammar.  They would still be allowed on tuple types, which is what 
you are using.

-Chris

> On Jun 14, 2017, at 9:45 PM, Charlie Monroe <[email protected]> wrote:
> 
> 
>> On Jun 15, 2017, at 6:01 AM, Chris Lattner via swift-evolution 
>> <[email protected]> wrote:
>> 
>> 
>>> On Jun 12, 2017, at 10:07 PM, Paul Cantrell <[email protected]> wrote:
>>> 
>>> What’s the status of this Chris’s double parens idea below? It garnered 
>>> some positive responses, but the discussion seems to have fizzled out. Is 
>>> there something needed to help nudge this along?
>>> 
>>> What’s the likelihood of getting this fixed before Swift 4 goes live, and 
>>> the great wave of readability regressions hits?
>> 
>> We discussed this in the core team meeting today.  Consensus seems to be 
>> that a change needs to be made to regain syntactic convenience here.  
>> Discussion was leaning towards allowing (at least) the parenthesized form, 
>> but more discussion is needed.
>> 
>> 
>> One (tangential) thing that came up is that tuple element names in tuple 
>> *patterns* should probably be deprecated and removed at some point.  Without 
>> looking, what variables does this declare?:
>> 
>>    let (a : Int, b : Float) = foo()
> 
> Personally, I use this often as "anonymous structs" (which tuples IMHO are). 
> Often, there is a return type used in 1-2 methods and in such case, I feel 
> that declaring a struct MyMethorReturnStruct is unnecessary and I use tuples 
> with named elements, so that the call site can easily access the information 
> it needs, which is particularly convenient if both tuple member are of the 
> same type:
> 
> func parseName() -> (firstName: String, lastName: String)
> 
> Instead of deprecating this, would it be possible to make this a syntax for 
> generating a truly anonymous structure? It can internally have a name that 
> mangles together the element *names and types*, so:
> 
> let name = (firstName: "John", lastName: "Doe")
> 
> type(of: name) == _firstName_String_lastName_String_
> 
> Hence you would be able to pass this structure wherever it's declared exactly 
> the same, but:
> 
> func passName() -> (name1: String, name2: String) {
>    return parseName() // see above for declaration
> }
> 
> will result in error as (firstName: String, lastName: String) cannot be 
> converted to (name1: String, name2: String).
> 
> 
>> 
>> ?
>> 
>> -Chris
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected]
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to