[swift-evolution] [Discussion] Removing tuple labels from the type signature

David Hart david at hartbit.com
Fri Feb 5 12:38:22 CST 2016


All of this discussion has given me food for thought and I’m not so sure it’s a proposal I’d still like to pursue.

> On 05 Feb 2016, at 16:20, Craig Cruden via swift-evolution <swift-evolution at swift.org> wrote:
> 
>> At a high level, I would think that a tuple would just be considered a “typed” heterogeneous list of values - that you should be able to access the same way that you access any list - same functions (map, reduce, etc.).  
>> 
>> I guess you could view the “labels” as a quasi-column header of some sort, which means although you might not be able to “convert” from (a: Int, b: Int) to (x: Int, y: Int) …. you would be able to `map` the values and the "column headers” to (x: Int, y: Int).
>> 
> 
> Shameless plug: which of course would make the concept of `cases` within the mapping of values within the tuple (heterogeneous list) very useful :p
> 
> 
> 
>> On 2016-02-05, at 22:17:55, Craig Cruden <ccruden at novafore.com <mailto:ccruden at novafore.com>> wrote:
>> 
>> At a high level, I would think that a tuple would just be considered a “typed” heterogeneous list of values - that you should be able to access the same way that you access any list - same functions (map, reduce, etc.).  
>> 
>> I guess you could view the “labels” as a quasi-column header of some sort, which means although you might not be able to “convert” from (a: Int, b: Int) to (x: Int, y: Int) …. you would be able to `map` the values and the "column headers” to (x: Int, y: Int).
>> 
>> 
>> 
>>> On 2016-02-05, at 19:41:19, Maximilian Hünenberger via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>> 
>>> Sleeping over it I have to give -1 to the proposal. However we should consider making explicit casts with "as" to different tuple types with and without labels (separate proposal).
>>> 
>>> - Maximilian
>>> 
>>> Am 05.02.2016 um 08:08 schrieb Taras Zakharko via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>>:
>>> 
>>>> The types are clearly different and the current behaviour is fine as it is. 
>>>> 
>>>> However, it would be nice to have more support for tuple types in the language. E.g. I’d expect something like this
>>>> 
>>>>   let x = (a:4, b:5)
>>>>  let y = x as (m: Int, n: Int)
>>>> 
>>>> to work (but it doesn’t currently, you have to use forced cast). 
>>>> 
>>>> — Taras
>>>> 
>>>>> On 05 Feb 2016, at 07:47, Ondrej Barina via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>>>> 
>>>>> -1 for proposal. Current behavior is fine. There is no need to change it
>>>>> Ondrej b.
>>>>> On Feb 5, 2016 12:56 AM, "Chris Lattner via swift-evolution" <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>>>> 
>>>>> > On Feb 4, 2016, at 3:26 PM, Maximilian Hünenberger <m.huenenberger at me.com <mailto:m.huenenberger at me.com>> wrote:
>>>>> >
>>>>> > Is this behavior intended?
>>>>> >
>>>>> > What disadvantage do I have if a conversion from (a: Int, b: Int) to (x: Int, y: Int) is allowed?
>>>>> 
>>>>> If that were allowed, then it also stands to reason that a conversion from “(a: Int, b : Int)” to “(b: Int, a : Int)” would also work… but would not swap the elements.  IMO, it is best to disallow things misleading things like this.
>>>>> 
>>>>> -Chris
>>>>> 
>>>>> >
>>>>> >
>>>>> > Thank you for clarification
>>>>> > - Maximilian
>>>>> >
>>>>> >> Am 05.02.2016 um 00:11 schrieb Chris Lattner <clattner at apple.com <mailto:clattner at apple.com>>:
>>>>> >>
>>>>> >>
>>>>> >>> On Feb 4, 2016, at 10:57 AM, Maximilian Hünenberger <m.huenenberger at me.com <mailto:m.huenenberger at me.com>> wrote:
>>>>> >>>
>>>>> >>> Is there a reasoning behind treating (Int, Int) and (lhs: Int, rhs: Int) as separate types?
>>>>> >>
>>>>> >> I’m not sure what you mean by “separate types”.  One has labels, one does not, so they are clearly separate.
>>>>> >>
>>>>> >> Further, "(Int, Int)” needs to be compatible/convertible to "(a : Int, b : Int)”, but “(a : Int, b : Int)” should not be convertible to “(x : Int, y : Int)”.
>>>>> >>
>>>>> >>> Is there a connection to your tuple splat proposal?
>>>>> >>
>>>>> >> No connection at all.
>>>>> >>
>>>>> >> -Chris
>>>>> >>
>>>>> >
>>>>> 
>>>>> _______________________________________________
>>>>> swift-evolution mailing list
>>>>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>>>> _______________________________________________
>>>>> swift-evolution mailing list
>>>>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>>> 
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160205/c15b539c/attachment.html>


More information about the swift-evolution mailing list