gpt4 book ai didi

emacs - 应该将 `flet` 替换为 `cl-flet` 还是 `cl-letf` ?

转载 作者:行者123 更新时间:2023-12-03 14:03:10 24 4
gpt4 key购买 nike

我安装的一些 elisp 函数会生成警告:

`flet' is an obsolete macro (as of 24.3); use either `cl-flet' or `cl-letf'.

如果我简单地替换所有 flet 会不会很危险?与 cl-flet ?
如果可以更换它们,哪个更好?

如果更换它不危险,我会向项目发送拉取请求。

他们有什么理由不改变它吗?

最佳答案

fletcl-flet 中的任何一个都不相同或 cl-letf .
它更危险(也许更强大)。这就是它被弃用的原因。

由于它不同(动态绑定(bind)函数名),您必须考虑
如果适合将其替换为 cl-flet .
flet 时的小例子不能替换为 cl-flet

(defun adder (a b)
(+ a b))

(defun add-bunch (&rest lst)
(reduce #'adder lst))

(add-bunch 1 2 3 4)
;; 10

(flet ((adder (a b) (* a b)))
(add-bunch 1 2 3 4))
;; 24

(cl-flet ((adder (a b) (* a b)))
(add-bunch 1 2 3 4))
;; 10

请注意 cl-flet进行词法绑定(bind),所以 adder 的行为没有改变,
flet进行动态绑定(bind),这使得 add-bunch暂时产生一个阶乘。

关于emacs - 应该将 `flet` 替换为 `cl-flet` 还是 `cl-letf` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18895605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com