> On May 5, 2017, at 8:34 AM, Vladimir.S <sva...@gmail.com> wrote: > > On 05.05.2017 6:12, Jose Cheyo Jimenez via swift-evolution wrote: >> I can't think of a single time when I would need a tuple shuffle but I don't >> really work with tuples much. It would be great to hear other people's usage >> of this feature. >> I did not know that types could be overloaded with values. That was very >> surprising to me. Honestly I think that is the issue here. Not sure what can >> be done about it. > >> let Int = 5 // works >> let Void = "what?" // works. > > Very interesting. Could some one clarify, why this is allowed? Isn't this is > a bug we want to fix? At least by requiring a tilda like `Int` > And of course, you can't "overload" user defined type: > struct S {} > let S = 10 // Error: invalid redeclaration of ’S'
What version of swift are you using? Could it be a regression? Welcome to Apple Swift version 3.1 (swiftlang-802.0.51 clang-802.0.41). Type :help for assistance. 1> struct S {} 2> let S = 10 S: Int = 10 3> print(S) error: repl.swift:3:7: error: ambiguous use of 'S' print(S) ^ > >> On May 4, 2017, at 7:14 PM, Robert Widmann via swift-evolution >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: >>> Hi all, >>> >>> So sorry that this proposal comes so late in the game, but I feel it’s too >>> important not to bring it to the attention of the community now. Attached >>> is a proposal to deprecate a language feature many of you will probably >>> have never had the chance to use: Tuple Shuffles. I’ve attached a copy of >>> the first draft of the proposal below, but the latest copy can be read on >>> Github <https://github.com/apple/swift-evolution/pull/705/files>. >>> >>> Thanks! >>> >>> ~Robert Widmann >>> >>> >>> Deprecate Tuple Shuffles >>> >>> * Proposal: SE-NNNN >>> >>> <https://github.com/CodaFi/swift-evolution/blob/8eaf320b3c2a117909fc0269c398e89c033a4b9f/proposals/NNNN-filename.md> >>> * Authors: Robert Widmann <https://github.com/codafi> >>> * Review Manager: TBD >>> * Status: Awaiting review >>> >>> >>> >>> <https://github.com/CodaFi/swift-evolution/blob/8eaf320b3c2a117909fc0269c398e89c033a4b9f/proposals/NNNN-deprecate-tuple-shuffles.md#introduction>Introduction >>> >>> This proposal seeks the deprecation of a little-known feature of Swift >>> called a "Tuple Shuffle". >>> >>> >>> >>> <https://github.com/CodaFi/swift-evolution/blob/8eaf320b3c2a117909fc0269c398e89c033a4b9f/proposals/NNNN-deprecate-tuple-shuffles.md#motivation>Motivation >>> >>> A tuple-shuffle is an undocumented feature of Swift in which one can >>> re-order the indices of a tuple by writing a pattern that describes a >>> permutation in a syntax reminiscent of adding type-annotations to a >>> parameter list: >>> >>> let a= (x:1,y:2) >>> var b: (y:Int,x:Int) >>> b= a >>> >>> It can be used to simultaneously destructure and reorder a tuple: >>> >>> let tuple= (first:0,second: (x:1,y:2)) >>> let (second: (x: b,y: c),first: a)= tuple >>> >>> It can also be used to map parameter labels out of order in a call >>> expression: >>> >>> func foo(_ : (x :Int, y :Int)) {} >>> foo((y:5,x:10))// Valid >>> >>> Note that a tuple shuffle is distinct from a re-assignment through a tuple >>> pattern. For example, this series of statements will continue to function >>> as before: >>> >>> var x= 5 >>> var y= 10 >>> var z= 15 >>> (z, y, x)= (x, z, y) >>> >>> Their inclusion in the language complicates every part of the compiler >>> stack, uses a syntax that can be confused for type annotations >>> <https://twitter.com/CodaFi_/status/860246169854894081>, contradicts the >>> goals of earlier SE's (see SE-0060 >>> <https://github.com/apple/swift-evolution/blob/9cf2685293108ea3efcbebb7ee6a8618b83d4a90/proposals/0060-defaulted-parameter-order.md>), >>> and makes non-sensical patterns possible in surprising places. >>> >>> Take switch-statements, for example: >>> >>> switch ((0,0),0){ >>> case (_ :let (y, z),_ :let s): ()// We are forbidden from giving >>> these patterns names other than "_" >>> default: () >>> } >>> >>> This proposal seeks to deprecate them in Swift 3 compatibility mode and >>> enforce that deprecation as a hard error in Swift 4 to facilitate their >>> eventual removal from the language. >>> >>> >>> >>> <https://github.com/CodaFi/swift-evolution/blob/8eaf320b3c2a117909fc0269c398e89c033a4b9f/proposals/NNNN-deprecate-tuple-shuffles.md#proposed-solution>Proposed >>> solution >>> >>> Construction of Tuple Shuffle Expressions will become a warning in Swift 3 >>> compatibility mode and will be a hard-error in Swift 4. >>> >>> >>> >>> <https://github.com/CodaFi/swift-evolution/blob/8eaf320b3c2a117909fc0269c398e89c033a4b9f/proposals/NNNN-deprecate-tuple-shuffles.md#detailed-design>Detailed >>> design >>> >>> In addition to the necessary diagnostics, the grammar will be ammended to >>> simplify the following productions: >>> >>> tuple-pattern → (tuple-pattern-element-list <opt>) >>> tuple-pattern-element-list → tuple-pattern-element | tuple-pattern-element >>> , tuple-pattern-element-list >>> - tuple-pattern-element → pattern | identifier:pattern >>> + tuple-pattern-element → pattern >>> >>> >>> >>> <https://github.com/CodaFi/swift-evolution/blob/8eaf320b3c2a117909fc0269c398e89c033a4b9f/proposals/NNNN-deprecate-tuple-shuffles.md#impact-on-existing-code>Impact >>> on Existing Code >>> >>> Because very little code is intentionally using Tuple Shuffles, impact on >>> existing code will be negligible but not non-zero. >>> >>> >>> >>> <https://github.com/CodaFi/swift-evolution/blob/8eaf320b3c2a117909fc0269c398e89c033a4b9f/proposals/NNNN-deprecate-tuple-shuffles.md#alternatives-considered>Alternatives >>> considered >>> >>> Continue to keep the architecture in place to facilitate this feature. >>> _______________________________________________ >>> swift-evolution mailing list >>> swift-evolution@swift.org <mailto:swift-evolution@swift.org> >>> https://lists.swift.org/mailman/listinfo/swift-evolution >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org >> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution