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