Учебники

LISP — Макросы

Макросы позволяют расширять синтаксис стандартного LISP.

Технически, макрос — это функция, которая принимает s-выражение в качестве аргументов и возвращает форму LISP, которая затем оценивается.

Определение макроса

В LISP именованный макрос определяется с помощью другого макроса с именем defmacro. Синтаксис для определения макроса —

(defmacro macro-name (parameter-list))
"Optional documentation string."
body-form

Определение макроса состоит из имени макроса, списка параметров, необязательной строки документации и тела выражений Lisp, определяющих работу, которую должен выполнять макрос.

пример

Давайте напишем простой макрос с именем setTo10, который возьмет число и установит его значение равным 10.

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

Live Demo

(defmacro setTo10(num)
(setq num 10)(print num))
(setq x 25)
(print x)
(setTo10 x)

Когда вы нажимаете кнопку «Выполнить» или нажимаете Ctrl + E, LISP выполняет его немедленно, и возвращается результат —