gpt4 book ai didi

lambda - 如何在 emacs lisp 语言中正确使用 lambda?

转载 作者:太空宇宙 更新时间:2023-11-03 18:56:30 25 4
gpt4 key购买 nike

当我想执行以下代码时遇到问题:

    (defun sum1
(lambda (n)
(+ n 1)))

当我使用 M-x ielm 运行时出现下一条消息:

无效函数:(lambda (lambda (n) (+ n 1)) nil)

我想说清楚,虽然我可能会使用以下代码:

    (defun sum1(n)
(+ n 1))

我想知道在这种情况下如何定义 lambda。

所有信息都被接受,我是新手。

最佳答案

lambda 创建一个函数,但没有给它命名。每当你需要创建一个函数时使用它,但不需要给它一个名字。一个很好的例子是只使用一次来对列表进行排序的比较函数。

(let ((l (number-sequence 1 10)))
(sort l (lambda (a b) (> a b)))) ;; reversed

defun 一个您永远不会再使用的函数可能会很烦人。想出一个名字需要一点点努力,你需要确保你没有覆盖现有的函数(这并不难,我通常在我的函数前加上我的首字母)。

lambda (IMO) 的一个常见滥用示例是用于 Hook 。许多人会将 lambda 添加到 hooks,但是如果你查看 hook 变量的值,你会发现一堆 lisp 而不是你可以运行 describe-function 的函数名 上。但更糟糕的是,您不能使用 remove-hook,也不能在编写或调试函数时重新定义函数。

关于lambda - 如何在 emacs lisp 语言中正确使用 lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42774903/

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