例如,这是一个宏:
(defmacro my-macro (x y)
(if (> x 0)
`(lambda (z) (+ z ,y))
`(lambda (z) (+ ,x z))))
Run Code Online (Sandbox Code Playgroud)
并(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)
Run Code Online (Sandbox Code Playgroud)
我错过了什么?