【发布时间】:2011-06-21 22:55:24
【问题描述】:
例如,这里有一个宏:
(defmacro my-macro (x y)
(if (> x 0)
`(lambda (z) (+ z ,y))
`(lambda (z) (+ ,x z))))
而(my-macro 2 3) 返回(lambda (z) (+ z 3))
但是,((my-macro 2 3) 1) 返回一个错误提示,
Debugger entered--Lisp error:
(invalid-function (my-macro 2 3))
((my-macro 2 3) 1)
eval(((my-macro 2 3) 1))
eval-last-sexp-1(nil)
eval-last-sexp(nil)
call-interactively(eval-last-sexp nil nil)
我错过了什么?
【问题讨论】:
-
如果您对所提供的帮助感到满意,请不要忘记接受答案。见stackoverflow.com/faq#howtoask