title: How to create a sequence of actions mid-expression in ReasonML (and avoid creating a tuple)?
body: <p>I want to bail out of a function early, if given unsuitable arguments The imperative solution in Javascript is elegant:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>arg=&gt;{
   if(arg&gt;limit) return 42;
   //perform complex operations
   return x+y
  }</code></pre>
  </div>
  </div>
  </p>
  
  <p>ReasonML as a functional language has no <code>return</code>, thus I am stuffing everything into single expression:</p>
  
  <pre class="lang-reasonml prettyprint-override"><code>arg=&gt;{
      let helper=()=&gt;{
          //complex operations here
          ; x+y
      }
      (arg&gt;limit) ? 42 : helper()
  }
  </code></pre>
  
  <p>Now, this works but instead of just returning 42 I want to stuff in <code>Js.Log("!CORNER CASE!")</code>. How can I do that? In C, I could write <code>(arg&gt;limit) ? (Js_Log("..."),42) : helper()</code>, but in ReasonML this becomes a tuple and does not compile.</p>
  
  <p>OCaml could do <code>begin printf "msg" ; 42 end</code>, but semicolon does not work for me in Reason: <code>(Js.log("TEST");42)</code> -- does not compile!</p>
  
  <p>Alternatively, I need the K-combinator in ReasonML.</p>