elisp,将函数作为参数传递并调用它,发生Eval错误,为什么?

Red*_*efl 2 emacs elisp

我的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)

一切都很好.