Na przykład tutaj jest makro:Dlaczego nie działa funkcja zwracana przez makro makr?
(defmacro my-macro (x y)
(if (> x 0)
`(lambda (z) (+ z ,y))
`(lambda (z) (+ ,x z))))
i (my-macro 2 3)
powraca (lambda (z) (+ z 3))
Jednak ((my-macro 2 3) 1)
zwraca błąd mówiący
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)
Czego mi brakuje?
Nie zapomnij przyjąć odpowiedzi, jeśli jesteś zadowolony z udzielonej pomocy. Zobacz http://stackoverflow.com/faq#howtoask – phils