Each <init> is an expression.Any variable must not appear more
than once in the <variable>s.

The <variable>s are bound to fresh locations, each <variable>
is assigned in left-to-right order to the result of evaluating the
corresponding <init>, the <body> is evaluated in the resulting
environment, and the values of the last expression in <body> are
returned. Despite the left-to-right evaluation and assignment order,
each binding of a <variable> has the entire letrec* expression as its
region, making it possible to define mutually recursive procedures.

It must be possible to evaluate each <init> without assigning or
referring to the value of the corresponding <variable> or the
<variable> of any of the bindings that follow it in
<bindings>. Another restriction is that the continuation of each
<init> should not be invoked more than once.

bigloo syntax: labels ((name (arg …) body) …) body

The syntax is similar to the Common Lisp one [Steele90],
where created bindings are immutable.