<div dir="ltr"><blockquote style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex" class="gmail_quote"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;white-space:normal">Therefore the impermissible:<br></span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;white-space:normal">(()) -&gt; ()</span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;white-space:normal"> </span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;white-space:normal">Is identical to:<br></span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;white-space:normal">(Void) -&gt; ()</span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;white-space:normal"> </span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;white-space:normal">So to follow these rules, it must instead be:<br></span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;white-space:normal">Void -&gt; ()</span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;white-space:normal"> </span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;white-space:normal">… and we’re back to T1 -&gt; T2 </span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;white-space:normal"></span><span style="color:rgb(34,34,34);font-family:arial,sans-serif;white-space:normal">:</span><i style="color:rgb(34,34,34);font-family:arial,sans-serif;white-space:normal"> )</i></blockquote><pre style="white-space:pre-wrap;color:rgb(0,0,0)"><font face="arial, helvetica, sans-serif"><br></font></pre><pre style="white-space:pre-wrap;color:rgb(0,0,0)"><font face="arial, helvetica, sans-serif">Wrong! If we enforce parentheses in function types, we won&#39;t be able to write</font></pre><pre style=""><font color="#000000"><span style="white-space:pre-wrap">Void -&gt; ()<br></span></font></pre><pre style="white-space:pre-wrap;color:rgb(0,0,0)"><font face="arial, helvetica, sans-serif">Parentheses will be required on the grammar level. The correct way to write this will be:</font></pre><pre style="white-space:pre-wrap;color:rgb(0,0,0)"><pre style="white-space:pre-wrap">() -&gt; ()  or  () -&gt; Void</pre><pre style="white-space:pre-wrap"><font face="arial, helvetica, sans-serif">The following will be legal:</font></pre><pre style="white-space:pre-wrap"><font face="monospace, monospace">(Void) -&gt; ()  and  (()) -&gt; ()</font></pre><pre style="white-space:pre-wrap"><font face="arial, helvetica, sans-serif">It is a function that takes a single parameter </font><font face="monospace, monospace">()</font><font face="arial, helvetica, sans-serif"> and returns </font><font face="monospace, monospace">()</font><font face="arial, helvetica, sans-serif">.</font></pre><pre style="white-space:pre-wrap"><font face="arial, helvetica, sans-serif">I additionally propose that the following should be illegal, because additional parentheses aren&#39;t needed there:</font></pre><pre style="white-space:pre-wrap"><font face="monospace, monospace">((())) -&gt; ()  and  () -&gt; (())  and just (Int) and (())</font></pre><pre style="white-space:pre-wrap"><font face="arial, helvetica, sans-serif">Hope it cleared up things a little bit.</font></pre><pre style="white-space:pre-wrap"><font face="arial, helvetica, sans-serif">- Anton</font></pre></pre></div>