This may be a silly, but I occasionally run into a situation where I&#39;m wondering what the effective precedence of &quot;if then else&quot; is. I was finally motivated to do a few experiments, and it seems like the precedence level is reset (below 0) after &quot;if&quot;, &quot;then&quot;, and &quot;else&quot;.<br>

<br>λ&gt; if not $ False then &quot;here&quot; else &quot;x&quot;<br>&quot;here&quot;<br>λ&gt; if False then (++ &quot;y&quot;) $ &quot;x&quot; else &quot;here&quot;<br>&quot;here&quot;<br>λ&gt; if True then &quot;here&quot; else (++ &quot;y&quot;) $ &quot;x&quot;<br>

&quot;here&quot;<br><br>I suppose I knew this was the case with &quot;if&quot;, but I had not given it much thought for &quot;then&quot; or &quot;else&quot;. Of course, it makes sense. It&#39;s the same for &quot;case&quot; and many other syntactic constructs.<br>

<br>I was wondering where this was defined in the Language Report. I had looked for prose, but found nothing. Now, I look at it again (with more motivation) and see it (clearly) in the following excerpt of the grammar (Ch. 3 Expressions):<br>

<br><span style="font-family: courier new,monospace;">exp → infixexp :: [context =&gt;] type     (expression type signature)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    | infixexp</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;"> </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">infixexp → lexp qop infixexp     (infix operator application)</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">         | - infixexp     (prefix negation)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">         | lexp</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;"> </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">lexp → \ apat1 … apatn -&gt; exp     (lambda abstraction, n ≥ 1)</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">     | let decls in exp     (let expression)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">     | if exp [;] then exp [;] else exp     (conditional)</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">     | case exp of { alts }     (case expression)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">     ...</span><br style="font-family: courier new,monospace;">

<br>Plainly and simply, this says that all infix expressions (infixexp) are expressions (exp), and these can be found in &quot;if then else&quot; and &quot;case&quot; among others. So, while I was looking for something regarding precedence, it is actually defined straightforwardly in the grammar. In case others happen to search for the same thing I did, maybe this will provide them with an answer of sorts.<br>

<br>Regards,<br>Sean<br>