The following functions produce iterators over integers:
Iterable_int range(int n)returns an iterable that produces the integers 0,...,n-1;
Iterable_int range(int n, int m, int skip=1)returns an iterable that produces the integers
n, n+skip, ..., m if (m-n)/skip >= 0, and otherwise produces
no integers.
Generally speaking, for (int i : range(n)) is equivalent to
for (int i : sequence(n)). The latter uses O(n)
memory but is
usually faster. The former uses O(1) memory but is slower.
If an iterator is specifically required, however, range(n) is faster
than range(sequence(n)) (as well as being more memory-efficient).