title: F# Conditional Expressions if...then..else returning unit or ()
body: <p>F#'s Condtional Expressions require a condition to check, a branch for true, and a branch for false. For example:</p>
  
  <pre><code>let x = 
      if ("hello" = null) 
      then true
      else false //error if else branch missing
  </code></pre>
  
  <p>However, something gets weird when <code>unit</code>, aka <code>()</code>, is involved.</p>
  
  <pre><code>let y = 
      if ("hello" = null) 
      then raise &lt;| new ArgumentNullException()
      else () //happy with or without else branch
  </code></pre>
  
  <p>And more simply:</p>
  
  <pre><code>let z = 
      if ("hello" = null) 
      then ()
      else () //happy with or without else branch
  </code></pre>
  
  <p>Why isn't an<code>else</code> branch required when <code>unit</code> is returned?</p>