我的elisp程序是:
(defun test (f x) (f x))
(test (lambda (x) (* x x)) 10)
运行它,发生错误:
* Eval error * 符号的函数定义为void:f
答案 0 :(得分:10)
Emacs是一个lisp-2,因此函数和变量有不同的命名空间。因此,在测试中,第二个(f x)中的f与参数列表中的(f)不同。
尝试
(defun test (f x) (funcall f x))
一切都很好。
答案 1 :(得分:1)
以下是更正:
(defun test (f x)
(funcall f x))
(test (lambda (x) (* x x)) 10)