![]() |
|
|
![]()
|
|
| Макрос и функция |
|
|||
|
Unregistered |
Помогите разобраться в различиях макросов и функицй.
В Чем разница??? Вот код который преобразует список в одноуровневый:
|
|||
|
||||
| svg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 13.4.2005 Репутация: 14 Всего: 18 |
Разница в том, что макрос выполняется в две стадии:
- сначала он расширяется, при этом его аргументы никак не интерпретируются; - возвращаемая форма выполняется в текущем окружении. Лучше всего тренироваться, расширяя макросы с помощью функции makroexpand, которая возвращает результат первой стадии выполнения макроса:
из чего видно, что реализация ONE2 в основоном бесполезна, так как аргументы ей можно передать только статически, через eval или только используя ее в другом макросе. |
|||
|
||||
| Cr@$h |
|
|||
![]() Исследователь ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: 1 Всего: 41 |
|
|||
|
||||
![]()
|
| Правила форума LISP | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | LISP | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |