Since decls in modules should all be pure, they can be executed in any order and depend on each other in any way as long as they don't introduce cycles, e.g.
let a = b();
let b = fn () => c + 5;
let c = 10;
is valid, but
let a = b();
let b = fn () => c + 5;
let c = a;
is not, because c -> a -> b -> c which makes the decls cyclic.
Since decls in modules should all be pure, they can be executed in any order and depend on each other in any way as long as they don't introduce cycles, e.g.
is valid, but
is not, because c -> a -> b -> c which makes the decls cyclic.