2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Функция until->transformed racket
Сообщение23.12.2020, 16:29 


10/12/17
50
Есть особая форма 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)
( тело функции )
)

 Профиль  
                  
 
 Re: Функция until->transformed racket
Сообщение23.12.2020, 20:40 
Заслуженный участник


27/04/09
28128
Видимо, на вход until->transformed подаётся всё-таки всё выражение (until ...) целиком. Им просто нужно манипулировать как списком, достав из него выражения, стоящие на месте аргументов exp1 ... expN test (и проверить, что голова списка — символ until), и поставить их в результирующий список, скорее всего используя псевдоцитирование.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group