我的elisp程序是:
(defun test (f x) (f x))
(test (lambda (x) (* x x)) 10)
Run Code Online (Sandbox Code Playgroud)
运行它,发生错误:
*Eval error* 符号的函数定义为void:f
Phi*_*ord 10
Emacs是一个lisp-2,因此函数和变量有不同的命名空间.因此,在测试中,第二个(fx)中的f与参数列表中的(f)不同.
尝试
(defun test (f x) (funcall f x))
Run Code Online (Sandbox Code Playgroud)
一切都很好.