title: Does OCaml support call-by-name parameter passing?
body: <p>Scala allows function parameters to be <em>call-by-name</em> using the '<code>=&gt;</code>' syntax. For example, the boolean <code>and</code> function can be defined as:</p>
  <pre class="lang-scala prettyprint-override"><code>def and(x: Boolean, y: =&gt; Boolean): Boolean =
    if (x) y else false
  </code></pre>
  <p>The second parameter is call-by-name. This ensures the expected &quot;short-circuiting&quot; behaviour – if <code>x</code> is <code>false</code>, <code>y</code> will not be evaluated at all.</p>
  <p>In general, this is useful for functions where a parameter might not be used at all.</p>
  <p>How can this be done in OCaml?</p>
  <p>I am aware that OCaml has constructs for lazy evaluation, but it is not clear to me if and how these could be used for call-by-name parameter passing.</p>