> On 15 Jun 2017, at 18:05, Xiaodi Wu via swift-evolution 
> <[email protected]> wrote:
> 
> On Thu, Jun 15, 2017 at 10:23 Robert Bennett via swift-evolution 
> <[email protected] <mailto:[email protected]>> wrote:
> > 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()
> 
> 
> I think it would be better if the compiler raised a warning whenever you 
> tried to redefine a builtin type.
> 
> That’s essentially my preferred solution as well, as it gets to the root of 
> the confusion.
> 
> Naming a variable the same as a type should be similar to naming a variable 
> the same as a reserved keyword and require backticks. (A previous suggestion 
> to enforce capitalization falls down with full Unicode support and 
> complicates interop where imported C structures might be lowercase and 
> constants might be all caps.) No need to treat built-in types specially; it’s 
> equally a problem with types imported from other libraries, which can be 
> shadowed freely today. For full source compatibility this can be a warning 
> instead of an error–should be sufficient as long as it’s brought to the 
> user’s attention. In fact, probably most appropriate as a warning, since the 
> _compiler_ knows exactly what’s going on, it’s the human that might be 
> confused.

I kind of agree with all you say. But I also feel that tuple element names in 
patterns are very rarely used and not worth the added complexity and confusing. 
Going back to the old: “Would be add it to Swift if it did not exist?”, I would 
say no.

> `let (a : Int, b : Float) = foo()` is confusing but if you were to use your 
> own type (e.g., `struct S {}` and replace Int and Float with S) you would get 
> a compiler error. If the compiler warned you that you were reassigning Int 
> and Float, you’d probably avoid that problem. Or, for a more extreme fix, we 
> could make reassigning builtin types illegal since there is pretty much no 
> valid reason to do that.
> 
> 
> > On Jun 15, 2017, at 8:10 AM, Matthew Johnson via swift-evolution 
> > <[email protected] <mailto:[email protected]>> wrote:
> >
> >
> >
> > Sent from my iPad
> >
> >> On Jun 14, 2017, at 11:01 PM, Chris Lattner via swift-evolution 
> >> <[email protected] <mailto:[email protected]>> wrote:
> >>
> >>
> >>> On Jun 12, 2017, at 10:07 PM, Paul Cantrell <[email protected] 
> >>> <mailto:[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()
> >
> > Another option would be to require let to appear next to each name binding 
> > instead of allowing a single let for the whole pattern.  I personally find 
> > that much more clear despite it being a little bit more verbose.
> >
> >>
> >> ?
> >>
> >> -Chris
> >>
> >> _______________________________________________
> >> swift-evolution mailing list
> >> [email protected] <mailto:[email protected]>
> >> https://lists.swift.org/mailman/listinfo/swift-evolution 
> >> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> >
> > _______________________________________________
> > swift-evolution mailing list
> > [email protected] <mailto:[email protected]>
> > https://lists.swift.org/mailman/listinfo/swift-evolution 
> > <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
> _______________________________________________
> swift-evolution mailing list
> [email protected] <mailto:[email protected]>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> _______________________________________________
> 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