例如,這裏是一個宏:爲什麼elisp宏返回的函數的應用程序不工作?
(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)
我缺少什麼?
如果您對提供的幫助滿意,請不要忘記接受答案。見http://stackoverflow.com/faq#howtoask – phils