on Date: Thu, 23 Nov 2017 09:56:35 +1100 Howard Lovatt < howard.lov...@gmail.com> wrote:
> > I would defend turning tuples into structs (change from structural type to > nominal type). This is a much better story for programmers, compare the two > stories: > > 1. Tuples are just syntax sugar for simple structs. > 2. Tuples are sort of like structs but there is a list of things tuples > can do that structs can't and a list of things structs can do and tuples > can't. > > I think unification can be achieved with some name mangling (Chris Lattner > noted this previously - I am just spelling out one scheme), e.g.: > > // var a = (zero: 0, one: 1) > public struct Tuple_zero_Int_one_Int { // Mangle name. > public var zero: Int > public var one: Int > } > var a = Tuple_zero_Int_one_Int(zero: 0, one: 1) > // a.0 = -1 > a.zero = -1 > > // var b = (0, 1) > public struct Tuple_0_Int_1_Int { // Mangle name. > public var _0_: Int // Unique name. > public var _1_: Int // Unique name. > } > var b = Tuple_0_Int_1_Int(_0_: 0, _1_: 1) > // a = b > a = Tuple_zero_Int_one_Int(zero: b._0_, one: b._1_) > > > Implicit in the above transformation is: > > 1. struct and tuple have the same memory layout. > 2. `.0` access the 1st stored property of a struct, `.1` the 2nd, etc. > not sure about the name mangling per se, but the very idea of treating tuples as structs is awesome and worth exploring. Mike
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution