Makra są to najpotężniejszym elementem języka Lisp,którei są dla niego unikalne. Dzięki makrom można dodawać nowe elementy do języka. Makro Lispowe,lispowe w odróżnieniu np. od makr występującywystępujących w pre-procesorze [[C (język programowania)|języka C]] operuje na kodzie języka lispLisp tak jak na danych. W przypadku funkcji wyrażenia które są przekazywane jako parametry są obliczane przed wywołaniem samej funkcji a wynik tego wyrażenia jest przekazywany jako parametr, w przypadku makra wyrażenia nie są obliczane, ale przekazane w całości jako dane w parametrze, które są przez makro przetwarzane, następnie makro powinno zwrócić kod lispowy także w postaci listy któryktóra zostanie obliczonyobliczona.