<div dir="ltr">&gt; <span style="font-size:12.8px">Closures cannot replace all uses of local functions. Local functions can be recursive, and have a generic parameter list.</span><div class="gmail-yj6qo gmail-ajU" style="font-size:12.8px"></div><br><div>My response would be add these featurtes to closures, it will make closures better.</div><div><br></div><div>In terms of recursion you can fiddle it:</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px">struct RecursiveClosure&lt;C&gt; {<br>    var c: C! = nil<br>}<br>func factorial(_ n: Int) -&gt; Int {<br>    var recursive = RecursiveClosure&lt;(Int) -&gt; Int&gt;()<br>    recursive.c = { x in<br>        (x == 0) ? 1 : x * recursive.c(x - 1)<br>    }<br>    return recursive.c(n)<br>}<br>factorial(5) // 120</blockquote></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature">  -- Howard.<br></div></div>
<br><div class="gmail_quote">On 27 October 2017 at 15:53, Slava Pestov <span dir="ltr">&lt;<a href="mailto:spestov@apple.com" target="_blank">spestov@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space"><br><div><span class=""><br><blockquote type="cite"><div>On Oct 26, 2017, at 9:52 PM, Howard Lovatt &lt;<a href="mailto:howard.lovatt@gmail.com" target="_blank">howard.lovatt@gmail.com</a>&gt; wrote:</div><br class="m_9145374068027432411Apple-interchange-newline"><div><div dir="ltr">It would be easy to provide a fixit.</div></div></blockquote><div><br></div></span>That is still a source breaking change that requires migration, though.</div><div><span class=""><br><blockquote type="cite"><div><div dir="ltr"> How often are they actually used? I rarely use them and all my use cases could be a closure instead. <div><br></div><div>Also see Mike Kluev example; local functions are arguably worse than closures in all cases (provided that you can appropriately annotate the function type).</div></div></div></blockquote><div><br></div></span>Closures cannot replace all uses of local functions. Local functions can be recursive, and have a generic parameter list.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Slava</div></font></span><span class=""><div><br><blockquote type="cite"><div><div class="gmail_extra"><br clear="all"><div><div class="m_9145374068027432411gmail_signature" data-smartmail="gmail_signature">  -- Howard.<br></div></div>
<br><div class="gmail_quote">On 27 October 2017 at 12:26, Slava Pestov <span dir="ltr">&lt;<a href="mailto:spestov@apple.com" target="_blank">spestov@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space"><span><br><div><br><blockquote type="cite"><div>On Oct 26, 2017, at 4:45 PM, Howard Lovatt via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</div><br class="m_9145374068027432411m_8201084941564550245Apple-interchange-newline"><div><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">Rather than expand local function syntax why not deprecate local functions completely</span></div></blockquote></div><br></span><div>I don’t think at this point such a drastic change to the language is likely to happen.</div><span class="m_9145374068027432411HOEnZb"><font color="#888888"><div><br></div><div>Slava</div></font></span></div></blockquote></div><br></div>
</div></blockquote></div><br></span></div></blockquote></div><br></div>