The for and as constructs provide iteration control clauses that establish a variable to be initialized. for and as clauses can be combined with the loop keyword and to get parallel initialization and stepping[1]. Otherwise, the initialization and stepping[1] are sequential.
The with construct is similar to a single let clause. with clauses can be combined using the loop keyword and to get parallel initialization.
For more information, see Section 6.1.2 (Variable Initialization and Stepping Clauses).