> 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