Макросы
Макросы позволяют определить новые управляющие конструкции и другие языковые особенности. Макрос определяется примерно так же, как функция, но вместо того, чтобы указывать, как вычислить значение, он указывает, как вычислить другое выражение Lisp, которое, в свою очередь, вычислит значение. Мы называем это выражение расширением макроса.
Макросы могут делать это, потому что они работают с невычисленными выражениями для аргументов, а не со значениями аргументов, как функции. Поэтому они могут создавать расширение, содержащее эти выражения аргументов или части их.
Если вы используете макрос для выполнения чего-то, что могла бы сделать обычная функция, только для повышения скорости, рассмотрите вместо этого использование встроенной функции. См. Встроенные функции.
| • Простой макрос | Базовый пример. | |
| • Расширение | Как, когда и почему макросы расширяются. | |
| • Компиляция макросов | Как макросы расширяются компилятором. | |
| • Определение макросов | Как написать определение макроса. | |
| • Проблемы с макросами | Не вычисляйте аргументы макроса слишком много раз. Не скрывайте переменные пользователя. | |
| • Отступы макросов | Указание способа отступа вызовов макроса. |
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Macros.html