<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=""><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class="">Hi everyone, this is my first post, hopefully I get the formatting and everything right...</font></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class="">&gt; why not just require a leading dot, like an enum, rather than a colon?
&gt; less syntax to learn, and it still eliminates the extra type.</font></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class="">I think this could lead to ambiguity if the trailing argument label was also an enum case, and there was a function signature whose last argument type was that enum. E.g.,</font></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class="">enum E {</font></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>case trailing</font></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class="">}</font></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class="">func foo(_ i: Int, trailing: E) {}</font></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class="">func foo(_ i: Int, trailing) {}</font></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class=""><br class=""></font></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class="">Now, which version of foo gets called by foo(1, .trailing)? It's a contrived example but demonstrates a real problem.</font></pre><pre style="background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class=""><span style="white-space: pre-wrap;" class="">Since the dollar sign is so rarely used — correct me if I'm wrong, but its only current use is for positional closure arguments — I propose we use it for trailing arguments. The fact that it seems out of place in a function context makes its intention clear — unlike, say, a colon which definitely "belongs" within a function's parentheses, or a period which can go just about anywhere.</span></font></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class="">The syntax I propose would be the following:</font></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class="">// Define</font></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class="">func foo(_ i: Int, $trailing) {}</font></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class="">// Call</font></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class="">foo(1, $trailing)</font></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><br class=""></pre><pre style="white-space: pre-wrap; background-color: rgb(255, 255, 255);" class=""><font face="Menlo" class="">It's not exactly pretty, but it's certainly unambiguous and makes the intention clear.</font></pre><div class=""><br class=""></div></body></html>