相关疑难解决方法(0)

let和flet在emacs lisp中

我不知道你是否会把它称为规范公式,但绑定一个本地函数我被GNU手册建议使用'flet':

(defun adder-with-flet (x)
  (flet ( (f (x) (+ x 3)) )
    (f x))
)
Run Code Online (Sandbox Code Playgroud)

然而,偶然我尝试(在使用Scheme之后)下面的表达式,其中我使用'let'将lambda表达式绑定到变量,并且如果我将函数传递给mapcar*它也可以工作:

(defun adder-with-let (x)
  (let ( (f (lambda (x) (+ x 3))) )
    (car (mapcar* f (list x)) ))
)
Run Code Online (Sandbox Code Playgroud)

这两个功能都有效:

(adder-with-flet 3)   ==> 6
(adder-with-let 3) ==> 6
Run Code Online (Sandbox Code Playgroud)

为什么第二个有效?我找不到任何文档,其中'let'可用于将函数绑定到符号.

binding elisp

37
推荐指数
3
解决办法
8940
查看次数

标签 统计

binding ×1

elisp ×1