Есть особая форма until, которая записывается так
Код:
(until
exp1
...
expn
test)
Здесь последовательно вычисляются exp1, . . . , expn, после чего вычисляет значение test. Если оно ложно, то снова вычисляются значения exp1, . . . , expn и т.д. Если значение test истинно, вычисление заканчивается с неопределенным значением #void. Необходимо написать функцию until->transformed, переводящую особую форму в выражение вида
Код:
(let ()
(define (loop)
exp1
...
expn
(if test (void) (loop)))
(loop))
Помогите разобраться как это сделать.
Я так понимаю нужно объявить функцию с аргументами exp1,...,expn, но я не совсем понимаю как получить выражение выше. Список передать с let()?
Код:
(define (until->transformed exp1 ... expn)
( тело функции )
)