<div dir="ltr"><div></div><div>On Tue Oct 10 15:02:37 CDT 2017 Slava Pestov spestov at <a href="http://apple.com">apple.com</a> wrote:</div><div><br></div><div>&gt;&gt; I’m minorly opposed, because it feels like a slippery slope. What about function bodies? etc<br></div><div>&gt;&gt; </div><div>&gt;&gt; func foo() -&gt; Int { 3 } // should this be allowed?</div><div><br></div><div>a small -1</div><div><br></div><div>or even:</div><div><br></div><div>func foo() { 3 } // Int return type inferred as well</div><div><br></div><div>a small -1</div><div><br></div><div>or</div><div><br></div><div>func(x = true) // Bool for x parameter inferred</div><div><br></div><div>a small +1</div><div><br></div><div>&gt; In fact the reason I thought the original thread was about </div><div>&gt; omitting the return type, rather than just omitting the ‘return’, </div><div>&gt; is that I feel the main reason that single-expression closures </div><div>&gt; exist is so that their type can be inferred as part of the </div><div>&gt; expression containing the closure. Swift does not infer types </div><div>&gt; across statement boundaries, so single expression closures </div><div>&gt; exist, as a special case, to help you avoid declaring types in some cases.</div><div><br></div><div>if you are from a school of thought that &quot;everything is a closure&quot; - it would make sense.</div><div><br></div><div>&quot;if expression closure else closure&quot;</div><div><br></div><div>&quot;var x { // return type inferred :-)<br></div><div>   get closure</div><div>   set closure</div><div>}&quot;</div><div><br></div><div><div>&quot;func foo closure&quot;</div></div><div><br></div><div>in the latter case it would worth to use the same parameter passing syntax as in closures for consistency:</div><div><br></div><div>func foo { (x: Int) in }</div><div>vs</div><div>func foo(x: Int) {}</div><div><br></div><div>&gt; Chris will say no, it’s about concision, and omitting the ‘return’, </div><div>&gt; but deep down in his heart, he knows that single-expression </div><div>&gt; closures were really just a type inference hack :-)</div><div><br></div><div>the amount of optimisation done in closure syntax was overwhelming when i first saw it.</div><div><br></div><div>Mike</div><div><br></div></div>