LISP - Макросы
Макросы позволяют расширить синтаксис стандартного LISP.
Технически макрос - это функция, которая принимает s-выражение в качестве аргументов и возвращает форму LISP, которая затем оценивается.
Определение макроса
В LISP именованный макрос определяется с помощью другого макроса с именем defmacro. Синтаксис для определения макроса -
(defmacro macro-name (parameter-list))
"Optional documentation string."
body-form
Определение макроса состоит из имени макроса, списка параметров, необязательной строки документации и тела выражений Лиспа, которые определяют задание, которое должно выполняться макросом.
пример
Давайте напишем простой макрос с именем setTo10, который будет принимать число и устанавливать его значение равным 10.
Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.
(defmacro setTo10(num)
(setq num 10)(print num))
(setq x 25)
(print x)
(setTo10 x)
Когда вы нажимаете кнопку «Выполнить» или нажимаете Ctrl + E, LISP выполняет его немедленно, и возвращается результат -
25
10