gpt4 book ai didi

function - 如何在 Elisp 中传递 lambda 表达式

转载 作者:行者123 更新时间:2023-12-04 23:08:43 26 4
gpt4 key购买 nike

所以,我试图在 Elisp 中创建一个通用的网络搜索功能:

(defun look-up-base (url-formatter)
(let (search url)
(setq search(thing-at-point 'symbol))
(setq url (url-formatter search))
(browse-url url))
)

此函数将抓取光标下的单词,使用 url-formatter 格式化该单词以进行网络搜索,然后在网络浏览器中打开搜索字符串以执行搜索。

接下来,我尝试实现一个函数,该函数将光标下的单词进行谷歌搜索,以之前的函数为基础。
(defun google ()
(interactive)
(look-up-base (lambda (search) (concat "http://www.google.com/search?q=" search))))

如果我尝试评估它,Emacs 不会提示,但是当我尝试使用它时,Emacs 给了我以下错误消息:
setq: Symbol's function definition is void: url-formatter

我不知道为什么会发生这种情况。我看不出这个功能有什么问题,我做错了什么?

最佳答案

我认为你需要使用 funcall :

而不是 (url-formatter search)你应该有 (funcall url-formatter search) .

Lisp 期望函数名作为列表的第一个元素。如果您有一个与 lambda 表达式或函数名称相关联的符号,则需要使用 funcall .

关于function - 如何在 Elisp 中传递 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5357656/

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