title: Parentheses in Ocaml
body: <p>I am evaluating a very simple piece of code in Ocaml toplevel:</p>
  
  <pre><code>let p5 () = print_int 5;;
  p5 ();;
  
  print_string "*************************";;
  
  let p4 = print_int 4;;
  p4;; 
  </code></pre>
  
  <p>And it returns:</p>
  
  <pre><code>val p5 : unit -&gt; unit = &lt;fun&gt;
  #   5- : unit = ()
  #   *************************- : unit = ()
  #   4val p4 : unit = ()
  #   - : unit = ()
  </code></pre>
  
  <p>My questions are</p>
  
  <ol>
  <li>What does <code>()</code> mean in <code>let p5 () = print_int 5;;</code>?</li>
  <li>What do <code>-</code> and <code>()</code> mean in <code>#   5- : unit = ()</code>?</li>
  <li>Is <code>p4</code> a function?</li>
  <li>Why is there a <code>4</code> in the beginning of <code>#   4val p4 : unit = ()</code>?</li>
  <li>It seems that <code>()</code> could be used in Ocaml code to hide side effect, could anyone show me an example?</li>
  </ol>