Several functional languages have a variant of let binder, called let*.
Syntactically, let* has the same syntax as let and letrec, that is,

  syntax Exp ::= "let*" Bindings "in" Exp

Semantically, let* processes its bindings in order, adding the current
binding to the environment before moving to the next binding.  For
example, the program

  let* x=1
  and  y=x
  in y

is well defined and evaluates to 1, but it would be undefined if we
replaced let* with let.  Add a let* construct to FUN.
