我正在为功能/宏组合编写一个宏(混合组合是可能的)。在宏的内部,我必须处理代表函数的符号和不同地命名宏的符号。这是因为结果函数必须使用任意数量的参数(如果组合中的函数最低可以),并且我不能将apply
应用于宏。我的问题:如何确定给定符号代表什么:函数还是宏?
答案 0 :(得分:9)
宏:
CL-USER 8 > (macro-function 'bar)
NIL
CL-USER 9 > (macro-function 'lambda)
#<Function LAMBDA 41100B7E94>
功能:
CL-USER 15 > (and (fboundp '+)
(not (macro-function '+))
(not (special-operator-p '+)))
T