![]() |
|
|
![]()
|
|
| ferbolg |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 8.11.2010 Репутация: нет Всего: нет |
Доброго времени суток!Задача: определить макрос do-loop <task1>...<taskn> until <test>. Вызов должен выглядеть например так:
Главный момент: слово until должно фигурировать в вызове. Встретил такой вариант решения:
Но что в данном случае обозначает запись &until ? until ведь не некое специальное слово в CL... |
||||
|
|||||
| VH_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 31.10.2006 Репутация: 10 Всего: 11 |
Пожалуй, необходимость присутствия символа until в вызове макро здесь связана с тем, что <по заданию> необходимо обеспечить выполнение нескольких (то есть заранее неизвестно скольких) задач (у Вас они обозначены <task1>...<taskn>). То есть макро следует «научить» обрабатывать переменное число аргументов. Известно, что в CommonLISP для указания на список аргументов произвольной длины используется параметр &REST. Определение макро, следовательно, будет выглядеть
В теле макро <вероятно> следует анализировать список args на предмет того, есть ли в нем вообще символ until и считать все аргументы до символа until подлежащими выполнению задачами <task1>...<taskn>, а первый после символа until аргумент - тестовым выражением <test>. |
|||
|
||||
| VH_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 31.10.2006 Репутация: 10 Всего: 11 |
|
|||
|
||||
| k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: нет Всего: 5 |
Это сообщение отредактировал(а) k0rvin - 21.11.2010, 17:07 -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
![]()
|
| Правила форума LISP | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | LISP | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |