compile/let*

Syntax: (let* [[NAME VALUE] ...] BODY ...)

Behaviour: Sequential let. Each binding is evaluated in a scope where the bindings before it are visible, by nesting one let per binding. A plain let evaluates every value in the outer scope.

Examples:

>>> (let* [[a 1] [b (+ a 1)]] (* a b))
2
let* [[path (Path root)] [src (path.joinpath "src")]]:
  (src.exists)

See also: let, let-values.