Loops, in the shape a worksheet can have them.
A worksheet is a set of definitions with dependencies, not a script. SMath's loops mutate variables inside a statement block, which fights that directly — so what this language provides instead is the three things those loops are actually doing in the corpus, none of which mutates anything.
A range is a vector. This is the loop counter, and on its own it already replaces the commonest for in the corpus.
The end is included when the step lands on it, because range(1, 5) has to index a five-element vector.
Ranges carry a dimension, so tabulating a physical quantity needs no trick.
map applies a function to every element. for(k, range(1, n), y[k] <- f(x[k])) is what the corpus writes; this is what it means.
Accumulating a total is map and then sum, not a running variable.
iterate applies a function a fixed number of times, which is what a convergence loop is. Newton-Raphson for the square root of two:
A fixed count rather than a tolerance test, deliberately: it terminates, it takes the same number of steps on every machine, and it cannot spin.