如何知道符号是代表函数还是宏?

时间:2014-07-03 15:23:20

标签: macros lisp common-lisp symbols function-composition

我正在为功能/宏组合编写一个宏(混合组合是可能的)。在宏的内部,我必须处理代表函数的符号和不同地命名宏的符号。这是因为结果函数必须使用任意数量的参数(如果组合中的函数最低可以),并且我不能将apply应用于宏。我的问题:如何确定给定符号代表什么:函数还是宏?

1 个答案:

答案 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