Рассмотрим значение j
в конце первой серии итераций: оно равно 10.
Затем i
увеличивается на 1 и внутренний цикл запускается снова. Но теперь j
равно 10, и цикл немедленно завершается!
Чтобы исправить эту проблему, просто повторно инициализируйте значение j
перед любым выполнением внутреннего цикла, например:
(define i 0)
(define j 0)
(while (< i 10)
(set! j 0)
(while (< j 10) (printf "~a ~a~n" i j) (set! j (+ j 1)))
(set! i (+ i 1)) )