这与这个问题有关:elisp functions as parameters and as return value
(defun avg-damp (n)
'(lambda(x) (/ n 2.0)))
要么
(funcall (avg-damp 6) 10)
或
((avg-damp 6) 10)
他们分别给出了 Symbol's value as variable is void: n
和 eval: Invalid function: (avg-damp 6)
错误。
最佳答案
第一种形式不起作用的原因是 n
是动态绑定(bind)的,而不是词法绑定(bind)的:
(defun avg-damp (n)
(lexical-let ((n n))
(lambda(x) (/ x n))))
(funcall (avg-damp 3) 12)
==> 4
第二种形式不起作用的原因是 Emacs Lisp 与 Common Lisp 一样,a "lisp-2", not a "lisp-1"
关于function - 如何在elisp中返回函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16344077/