Как проверить, является ли символ макросом - PullRequest
3 голосов
/ 02 июня 2019

В общем, я хотел бы узнать, является ли символ макросом или нет. Есть ли такой предикат, как (macrop), который позволит мне определить, является ли имя / символ макросом?

1 Ответ

5 голосов
/ 02 июня 2019

Если macro-function возвращает не NIL, то это макрос.

CL-USER 1 > (defmacro foo (bar) bar)
FOO

CL-USER 2 > (macro-function 'foo)
#<anonymous interpreted function 40600108FC>

Обратите внимание, что это работает для типичных глобальных макросов. Существуют также локальные и лексические макросы, символьные макросы, ...

...