LISP - Macros

As macros permitem estender a sintaxe do LISP padrão.

Tecnicamente, uma macro é uma função que recebe uma expressão s como argumentos e retorna um formulário LISP, que é então avaliado.

Definindo uma Macro

No LISP, uma macro nomeada é definida usando outra macro chamada defmacro. A sintaxe para definir uma macro é -

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

A definição da macro consiste no nome da macro, uma lista de parâmetros, uma string de documentação opcional e um corpo de expressões Lisp que define o trabalho a ser executado pela macro.

Exemplo

Vamos escrever uma macro simples chamada setTo10, que pegará um número e definirá seu valor para 10.

Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.

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

Quando você clica no botão Executar, ou digita Ctrl + E, o LISP executa imediatamente e o resultado retornado é -

25
10