title: How does the 'infix' work?
body: <p>I'm playing with the <code>infixr</code>, <code>infixl</code> and <code>infix</code> declarations. I understand how <code>infixr</code> and <code>infixl</code> works:</p>
  
  <pre><code>-- Test expression: 40 +++ 20 +++ 50 +++ 10 * 10
  
  -- infixr 8 +++ -- Calculated as: (40 +++ (20 +++ (50 +++ 10))) * 10. Result: 630.
  -- infixl 8 +++ -- Calculated as: (((40 +++ 20) +++ 50) +++ 10) * 10. Result: 800.
  
  -- infixr 6 +++ -- Calculated as: 40 +++ (20 +++ (50 +++ (10 * 10))). Result: 75.
  -- infixl 6 +++ -- Calculated as: ((40 +++ 20) +++ 50) +++ (10 * 10). Result: 125.
  
  (+++) :: Int -&gt; Int -&gt; Int
  a +++ b = a + (b `div` 2)
  </code></pre>
  
  <p>But I don't understand how the <code>infix</code> keyword works. Am I right in thinking that with <code>infix</code> you always need to specify the order with parenthesis? If so, why is the numeric argument necessary considering that brackets have the highest precedence)? </p>