2
可能重複:
How to pass a lambda expression in Elisp如何調用拉姆達在LISP傳遞參數
我有以下代碼:
(defun my-map (p l)
(mapcar (lambda (el) (p el)) l))
(defun test()
(my-map (lambda (x) (+ x 1)) (list 1 2 3)))
(它的例子 - 不是實際的代碼我試圖寫)。它抱怨找不到函數p:
Debugger entered--Lisp error: (void-function p)
(p el)
(lambda (el) (p el))(1)
mapcar((lambda (el) (p el)) (1 2 3))
my-map((lambda (x) (x + 1)) (1 2 3))
test()
eval((test) nil)
eval-expression((test) nil)
call-interactively(eval-expression nil nil)
recursive-edit()
debug(error (void-variable test))
eval(test nil)
eval-expression(test nil)
call-interactively(eval-expression nil nil
我想,它把一個p
的符號,而不是變量在外部範圍的限制。如何使它工作?
可能重複[如何在Elisp中傳遞lambda表達式](http://stackoverflow.com/questions/5357656/how-to-pass-a-lambda-expression-in-elisp)和[How我是否將函數作爲參數傳遞給elisp?](http://stackoverflow.com/questions/213267/how-do-i-pass-a-function-as-a-parameter-to-in-elisp) – phils
@wvxvw:我的意思是(+ x 1)'。 –
@phils:你是對的(我投票結束 - 奇怪的是我認爲作者可以將它自己的問題作爲重複關閉)。 –