<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Before I start working on a proposal, I’d like to understand the problem in detail. Can someone help me understand why parts of the language treats tuple labels as type and other not?<div class=""><div class=""><br class=""></div><div class=""><font face="Menlo" class="">let&nbsp;a: (lhs:&nbsp;Int, rhs:&nbsp;Int) = (4,&nbsp;5) // works</font></div><div class=""><font face="Menlo" class="">(4,5).dynamicType&nbsp;== (lhs:&nbsp;2, rhs:&nbsp;6).dynamicType // true</font></div><div class=""><br class=""></div><div class="">But:</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">[(lhs:&nbsp;3, rhs:&nbsp;5)] == [(1,2)]</font></div><div class=""><font face="Menlo" class="">// Binary operator ‘==‘ cannot be applied to operands of type ‘[(las: Int, rhs: Int)]’ and ‘[(Int, Int)]’</font></div><div class=""><font face="Menlo" class="">[(lhs:&nbsp;3, rhs:&nbsp;5)].dynamicType&nbsp;== [(1,2)].dynamicType</font></div><div class=""><font face="Menlo" class="">// Binary operator&nbsp;‘==‘ cannot be applied to operands of type&nbsp;‘Array&lt;(las: Int,&nbsp;rhs: Int)&gt;.Type’ and&nbsp;‘Array&lt;(Int, Int)&gt;'</font></div><div class=""><br class=""></div><div class="">And:</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">struct&nbsp;Foo&lt;T&gt; {<br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>let&nbsp;bar:&nbsp;T<br class="">}<br class=""><br class="">var&nbsp;foo1 =&nbsp;Foo(bar: (4,&nbsp;5))<br class="">var&nbsp;foo2 =&nbsp;Foo(bar: (lhs:&nbsp;4, rhs:&nbsp;5))<br class="">foo1&nbsp;=&nbsp;foo2</font></div><div class=""><font face="Menlo" class="">// Cannot assign value of type ‘Foo&lt;(las: Int, res: Int)&gt;’ to type ‘Foo&lt;(Int, Int)&gt;’</font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><font face="Menlo" class="">But:</font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><font face="Menlo" class="">foo1.dynamicType&nbsp;==&nbsp;foo2.dynamicType // true</font></div><div class=""><br class=""></div><div class="">So it seems that in parts of the language, they are treated with the same type, but not in generics.</div></div><div class=""><br class=""></div><div class="">Any input?</div></body></html>