title: What's the general rules to placing parenthesis in OCaml?
body: <p>I always have troubles to place parenthesis in OCaml. Well, I always don't want to, but sometimes get error.</p>
  
  <hr>
  
  <p>for example, let's say I have two functions:</p>
  
  <p><code>let f_a x y = x+y</code> and <code>let f_b x = x+1</code>.</p>
  
  <p>If I do <code>f_a 3 f_b 4</code>, I can't and I should do <code>f_a 3 (f_b 4)</code>.</p>
  
  <p>But if I do <code>f_a 3 * f_b 4</code>, it is perfectly fine.</p>
  
  <hr>
  
  <p>Another example, If I do <code>f_a x y::[]</code>, it is fine too and I don't need to add parenthesis like this <code>(f_a x y)::[]</code>.</p>
  
  <p>Also I find that I don't need parenthesis for elements inside a tuple: <code>(f_a 1 2, f_b 3)</code> is fine. </p>
  
  <hr>
  
  <p>So can anyone teach me the general rules to decide when using parenthesis and when not?</p>