Написать функцию (racket)

Нужно написать функцию на racket. Есть особая форма until

(until
exp1
...
expn
test)

последовательно вычисляются exp1, . . . , expn, после чего вычисляет значение test. Если оно ложно, то снова вычисляются значения exp1, . . . , expn и т.д. Если значение test истинно, вычисление заканчивается с неопределенным значением #void. Необходимо написать функцию until->transformed, переводящую особую форму в выражение вида

(let ()
(define (loop)
exp1
...
expn
(if test (void) (loop)))
(loop))

Не совсем понимаю как это сделать. Я определяю функцию с именем until->transformed и аргументами exp1..expn, а вот как написать тело функции, чтобы получилось выражение выше? Помогите разобраться

(define (until->transformed exp1 ... expn) 
( //здесь должно быть тело функции? )
)

Ответы (0 шт):