Я выполняю упражнение.4.9 из sicp и пытаюсь реализовать синтаксис выражения «for», который выглядит так, как другие будут видеть в c ++:
(for (((i 0) (j 1))
(< (+ i j) 10)
((i (+ i 1))))
(display "i:")
(display i)
(display "\n")
(display "j:")
(display j)
(display "\n"))
выглядит синтаксиснапример:
(for ((initial-statement) (predicate-statement) (updating-statement)) (for-body))
и то, что я сгенерировал, выглядит так:
((lambda ()
(define j 1)
(define i 0)
(define inner-loop
(if (< (+ i j) 10)
(begin (display "i:")
(display i)
(display "\n")
(display "j:")
(display j)
(display "\n")
(set! i (+ i 1))
(inner-loop))))
(inner-loop)))
И я получил сообщение о том, что первый вызов inner-loop
пытался приблизиться к несвязанной переменной
Мне интересно, как должен выглядеть правильный код, который я должен сгенерировать?