Поиск:

Ответ в темуСоздание новой темы Создание опроса
> макрос Setmacro 
:(
    Опции темы
alenka012
Дата 16.12.2009, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 16.12.2009

Репутация: нет
Всего: нет



Необходимо построить макрос, который реализует инициализацию элементов одного списка элементами другого списка. Например, (Setmacro (q w e) (1 2 3))

списки  в Setmacro идут без блокировки
результат
[code=nocolor]
>w
2
[/cde]
 
PM MAIL   Вверх
Ryukzak
Дата 16.12.2009, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 12.9.2006

Репутация: нет
Всего: 1



Код

(defmacro smc (vars values)
    `(progn 
         ,@(loop for var in vars
                         for value in values
                         collect `(setf ,var ,value))))


Как-то так...
Код

(smc (w s x) (1 2 3)) -> (PROGN (SETF W 1) (SETF S 2) (SETF X 3))

PM MAIL   Вверх
VH_
Дата 17.12.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 31.10.2006

Репутация: 10
Всего: 11



Возвращает список значений
Код
(defmacro SETMACRO (Name Value)
 (if Name
  (list 'cons
   (set (car Name) (car value))
   (list 'SETMACRO (cdr Name) (cdr Value)))))

Возвращает nil
Код
(defmacro SETMACRO (Name Value)
 (if Name
  (progn
   (set (car Name) (car value))
   (list 'SETMACRO (cdr Name) (cdr Value)))))


Это сообщение отредактировал(а) VH_ - 17.12.2009, 12:58
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.1719 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.