<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=""><div class="">I am sorry for taking up your time. To be more concise:</div><div class=""><br class=""></div><div class="">Associated types as argument lists were my only intended usage of this feature. Because the feature does not work for that case, I evaluate this proposal to be magnificent. It will end some confusion.</div><div class=""><br class=""></div><div class=""><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 5, 2016, at 2:31 PM, Chris Lattner &lt;<a href="mailto:clattner@apple.com" class="">clattner@apple.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><blockquote type="cite" class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div class=""><br class="Apple-interchange-newline">On Feb 5, 2016, at 11:15 AM, Jessy Catterwaul via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class="">I am fine with this proposal, except for having to name the parameter. The argument should be known as $0, within the function. Explanation and example…</div></div></div></blockquote><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Hi Jessy,</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">I don’t understand what you’re referring to here. &nbsp;The proposal is about removing a feature, not changing existing functionality or adding new things. &nbsp;If you’d like to propose a language change, please do so on a new thread.</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">-Chris</div><br class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><blockquote type="cite" class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><br class=""></div>My single use case of where this feature<span class="Apple-converted-space">&nbsp;</span><i class="">might have</i>&nbsp;worked, actually does not. See the double parentheses:<div class=""><br class=""></div><div class=""><div class="" style="margin: 0px; line-height: normal;"><div class="" style="margin: 0px; line-height: normal;"><div class="" style="margin: 0px; line-height: normal;"><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;"><span class="" style="color: rgb(187, 44, 162);">protocol</span><span class="Apple-converted-space">&nbsp;</span>Protocol {</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">typealias</span><span class="Apple-converted-space">&nbsp;</span>Arguments</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>ƒ1(parameters:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Arguments</span>) -&gt;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Arguments</span></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>ƒ2(parameters:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Arguments</span>)</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;">}</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;"><br class=""></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;"><br class=""></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;"><span class="" style="color: rgb(187, 44, 162);">struct</span><span class="Apple-converted-space">&nbsp;</span>Struct1:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Protocol</span><span class="Apple-converted-space">&nbsp;</span>{</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">typealias</span><span class="Apple-converted-space">&nbsp;</span>Arguments = (goodName:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">String</span>, otherGoodName:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">String</span>)</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>ƒ1(parameters:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Arguments</span>) -&gt;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Arguments</span><span class="Apple-converted-space">&nbsp;</span>{</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;">&nbsp; &nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">return</span><span class="Apple-converted-space">&nbsp;</span>(goodName:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(209, 47, 27);">""</span>, otherGoodName:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(209, 47, 27);">""</span>)</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;">&nbsp;&nbsp; }</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>ƒ2(parameters:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Arguments</span>) {}</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;">}</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;"><br class=""></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;"><span class="" style="color: rgb(187, 44, 162);">let</span><span class="Apple-converted-space">&nbsp;</span>struct1 =<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Struct1</span>()</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;"><br class=""></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; color: rgb(0, 132, 0);">// Too many parentheses are needed, but whatever.</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; color: rgb(0, 132, 0);">// Not a big deal.</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;"><span class="" style="color: rgb(187, 44, 162);">let</span><span class="Apple-converted-space">&nbsp;</span>struct1Arguments =<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">struct1</span>.<span class="" style="color: rgb(49, 89, 93);">ƒ1</span>((goodName:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(209, 47, 27);">""</span>, otherGoodName:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(209, 47, 27);">""</span>))</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;"><br class=""></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; color: rgb(79, 129, 135);">struct1<span class="">.</span><span class="" style="color: rgb(49, 89, 93);">ƒ2</span><span class="">(</span>struct1Arguments<span class="">)</span></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;"><br class=""></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;"><span class="" style="font-family: Helvetica; font-size: 12px;"><br class=""></span></div><div class="" style="margin: 0px; line-height: normal; min-height: 16px;">Typealiases fall apart when I need a single parameter:</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;"><br class=""></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;"><span class="" style="color: rgb(187, 44, 162);">struct</span><span class="Apple-converted-space">&nbsp;</span>Struct2:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Protocol</span><span class="Apple-converted-space">&nbsp;</span>{</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; color: rgb(0, 132, 0);"><span class="">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span>// Should be (goodName: String) but named 1-tuples don't work.</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">typealias</span><span class="Apple-converted-space">&nbsp;</span>Arguments =<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">String</span></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;">&nbsp; &nbsp;<br class="webkit-block-placeholder"></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>ƒ1(parameters:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Arguments</span>) -&gt;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Arguments</span><span class="Apple-converted-space">&nbsp;</span>{<span class="" style="color: rgb(187, 44, 162);">return</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(209, 47, 27);">""</span>}</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>ƒ2(parameters:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Arguments</span>) {}</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;">}</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;"><br class=""></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;"><span class="" style="color: rgb(187, 44, 162);">let</span><span class="Apple-converted-space">&nbsp;</span>struct2 =<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Struct2</span>()</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;"><br class=""></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; color: rgb(0, 132, 0);">// No extra parentheses are needed but I don't know what the argument is.</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; color: rgb(0, 132, 0);">// This is a big deal.</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;"><span class="" style="color: rgb(187, 44, 162);">let</span><span class="Apple-converted-space">&nbsp;</span>struct2Arguments =<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">struct2</span>.<span class="" style="color: rgb(49, 89, 93);">ƒ1</span>(<span class="" style="color: rgb(209, 47, 27);">""</span>)</div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;"><br class=""></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; color: rgb(79, 129, 135);">struct2<span class="">.</span><span class="" style="color: rgb(49, 89, 93);">ƒ2</span><span class="">(</span>struct2Arguments<span class="">)</span></div></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; color: rgb(79, 129, 135);"><span class=""><br class=""></span></div><div class="" style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; color: rgb(79, 129, 135);"><br class=""></div><div class="" style="margin: 0px; line-height: normal;">We need to be able to name the element of a single-item tuple, and we need to stop enforcing&nbsp;internal parameter names:</div><div class="" style="margin: 0px; line-height: normal;"><br class=""></div><div class="" style="margin: 0px; line-height: normal;"><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">protocol</span><span class="Apple-converted-space">&nbsp;</span>Protocol {</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">typealias</span><span class="Apple-converted-space">&nbsp;</span>Arguments</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>ƒ1(Arguments) -&gt;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Arguments</span></div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>ƒ2(Arguments)</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">}</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; min-height: 16px;"><br class=""></div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">struct</span><span class="Apple-converted-space">&nbsp;</span>Struct:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Protocol</span><span class="Apple-converted-space">&nbsp;</span>{</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">typealias</span><span class="Apple-converted-space">&nbsp;</span>Arguments = (goodName:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(112, 61, 170);">String</span>)</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>ƒ1(Arguments) -&gt;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Arguments</span><span class="Apple-converted-space">&nbsp;</span>{</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">return</span><span class="Apple-converted-space">&nbsp;</span>(goodName: $0.goodName)</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">&nbsp;&nbsp; }</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">func</span><span class="Apple-converted-space">&nbsp;</span>ƒ2(Arguments) {}</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">}</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; min-height: 16px;"><br class=""></div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">let</span><span class="Apple-converted-space">&nbsp;</span>`struct` =<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">Struct</span>()</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);">let</span><span class="Apple-converted-space">&nbsp;</span>structArguments =<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(79, 129, 135);">`struct`</span>.<span class="" style="color: rgb(49, 89, 93);">ƒ1</span>((goodName:<span class="Apple-converted-space">&nbsp;</span><span class="" style="color: rgb(209, 47, 27);">""</span>))</div><div class="" style="margin: 0px; font-size: 14px; line-height: normal; font-family: Menlo; color: rgb(79, 129, 135);">`struct`<span class="">.</span><span class="" style="color: rgb(49, 89, 93);">ƒ2</span><span class="">(</span>structArguments<span class="">)</span></div></div></div></div></div></div>_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></div></blockquote></div></blockquote></div><br class=""></div></div></body></html>