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