title: Why is 'do' needed in the Opa language?
body: <p>I think newbies are going to be confused by 'do' and I wonder about it from a language design standpoint.  You don't want to confuse newbies at this stage of the life of a new language where pretty much everyone is a newbie and you want newbies in order to build a community and critical mass ;-)</p>
  
  <p>The documentation for 'do' (3.8.3. To do or not to do) says: </p>
  
  <blockquote>
    <p>There is a very good reason for this construction: in Opa, every function definition (and more generally every value not at toplevel) ends with one value, which is the result of the function — conversely, <strong>once we have reached the first value, we have the result of the function, so the function is complete</strong>.</p>
  </blockquote>
  
  <p>It's the part I bolded above that I wonder about: why is it that after reaching the first value the function is complete?  Was 'do' introduced in order to avoid things like this that you see in OCaml?:</p>
  
  <pre><code>let _ = (some expression)
  </code></pre>
  
  <p>What are the alternatives to this use of 'do' in Opa's language design?  How else could this have been approached (from a language design standpoint).</p>