LISP - makra

Makra pozwalają na rozszerzenie składni standardowego LISP-a.

Z technicznego punktu widzenia makro to funkcja, która przyjmuje jako argumenty wyrażenie s i zwraca formularz LISP, który jest następnie oceniany.

Definiowanie makra

W LISP nazwane makro jest definiowane przy użyciu innego makra o nazwie defmacro. Składnia do definiowania makra to -

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

Definicja makra składa się z nazwy makra, listy parametrów, opcjonalnego ciągu dokumentacji oraz treści wyrażeń Lisp, które definiują zadanie, które ma być wykonane przez makro.

Przykład

Napiszmy proste makro o nazwie setTo10, które przyjmie liczbę i ustawi jej wartość na 10.

Utwórz nowy plik kodu źródłowego o nazwie main.lisp i wpisz w nim następujący kod.

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

Kiedy klikniesz przycisk Wykonaj lub naciśniesz Ctrl + E, LISP wykona go natychmiast, a zwrócony wynik to -

25
10