It's easy to be lulled into thinking this is a kind of imperative construction. *But it's not!* It's really just a shorthand for the compound "let"-expressions we've already been looking at, taking the maximum syntactically permissible scope. (Compare the "dot" convention in the lambda calculus, discussed above.)
-<!--
-
9. Some shorthand
OCaml permits you to abbreviate:
and there's no more mutation going on there than there is in:
+<!--
<pre>
<code>∀x. (F x or ∀x (not (F x)))</code>
</pre>
+-->
When a previously-bound variable is rebound in the way we see here, that's called **shadowing**: the outer binding is shadowed during the scope of the inner binding.
--->
Some more comparisons between Scheme and OCaml
----------------------------------------------