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