emacs - 如何在 Emacs Lisp 中将函数的词法绑定(bind)传递给 'eval'?

标签 emacs elisp eval

在 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/

相关文章:

emacs - 如何按文件类型设置 Emacs 选项卡设置?

emacs - 如何在 emacs 中分隔 alt 和 meta 键

regex - 如何捕获在 elisp 中拆分字符串的结果?

c# - 你能在 linq 中评估或等效吗?

javascript - 在 .load() 页面之后执行 javascript

python - ast.literal_eval 用于 python 中的变量?

regex - 是否可以更改 emacs 的正则表达式语法?

Emacs - 如何在 BOTH - projectile 和 treemacs 中自动添加新项目?

emacs - 在 Emacs Lisp 中使用 obarray 而不是哈希表有什么好处吗?

emacs - 将带参数的函数添加到钩子(Hook)