在 Emacs Lisp 中,词法环境由 alist 表示,将符号映射到它们的值。它可以作为“eval”函数的第二个参数传递给评估器。
(eval '(+ 3 var)
'((var . 4)))
→ 7
但是,我不知道如何传递函数,而不是变量, 给评估者。
例如,以下任一表达式都会显示错误。
(eval '(func 3)
'((func . (lambda (x) (+ 4 x)))))
→ error: (void-function func)
(eval '(func 3)
'((func . (closure (t) (x) (+ 4 x)))))
→ error: (void-function func)
感谢任何帮助。
最佳答案
这个怎么样:
(eval '(apply func (list 3))
'((func . (lambda (x) (+ 4 x)))))
关于emacs - 如何在 Emacs Lisp 中将函数的词法绑定(bind)传递给 'eval'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41100017/