Итерационная конструкция в схеме - "do
", ее можно посмотреть в спецификации R5RS .
Пример, который вы привели, будет выглядеть примерно так:
(do ((i 0 (+ i 1))) ((> i 9))
(do ((j 0 (+ j 1))) ((> j 2))
(display j)
(newline))
(display i)
(newline))
(do ...)
немного более общий, чем тот, что показан в этом примере. Например, вы можете заставить его возвращать значение, а не просто использовать его для побочных эффектов. Также возможно иметь много «счетчиков»:
(do ((i 0 (+ i 1)
(j 0 (+ j 2))
((stop? i j) <return-value>)
exprs...)