SE-0066 disallows Void to be used on left side of function types.<div><br></div><div>Some people, including me, argue that Void should be removed altogether, because:</div><div>1) () is more consistent with curried functions: (Int) -&gt; () -&gt; Double</div><div>2) () follows functional programming traditions</div><div><br></div><div>Now, why don&#39;t we repurpose Void to follow functional programming traditions as well?</div><div>Its definition will look like:</div><div>enum Void { }</div><div><br></div><div>Basically, Void is a type which cannot have values.</div><div>With it, we can eliminate at least two Swift special cases:</div><div><br></div><div>1. Noreturn functions</div><div><br></div><div>func exit(code: Int = 0) -&gt; Void</div><div><br></div>From this signature, it&#39;s obvious that `exit` cannot return normally<div><br></div><div>2. Rethrows</div><div><br></div><div>func call&lt;T, U&gt;(block: () throws T -&gt; U) throws T -&gt; U</div><div><br></div><div>Non-throwing functions are functions throwing Void.</div><div>So if T=Void, we get the non-throwing version of `call`.</div><div><br></div>- Anton