如何在 emacs lisp 中将参数传递给 map?
我想编写一个小函数来向列表添加值。它看起来像这样:
(defvar fares '(31.14 28.12 25.10 22.08 19.06 16.04 13.02 10))
(defun plus-extra (fare) (+ 3.02 fare))
(map 'plus-extra fares)
可以预见的是,elisp 会失败,因为该函数需要一个参数。我缺少什么?
谢谢 罗伯特
I want to write a small function to add a value to a list. it looks like this:
(defvar fares '(31.14 28.12 25.10 22.08 19.06 16.04 13.02 10))
(defun plus-extra (fare) (+ 3.02 fare))
(map 'plus-extra fares)
Fairly predictably, the elisp barfs because the function needs an argument. What am I missing?
Thanks
Robert
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这里没有足够参数的函数是
map
,而不是您定义的函数。Emacs Lisp 中不存在
map
函数,它由cl
包提供。此map
函数需要 3 个参数,第一个参数必须是map
应返回的类型。这:会起作用。但你想要的是这个:
这是原生的 elisp。
PS:不要忘记 Emacs 附带了它的文档! Ch f 地图 RET ;-)。
The function which doesn't have enough argument here is
map
, not the one you defined.The
map
function does not exists in Emacs Lisp, it is provided by thecl
package. Thismap
function require 3 arguments, the first one must be the type of whatmap
should return. This:will work. But what you want is this:
which is native elisp.
PS: Don't forget that Emacs comes with its documentation! C-h f map RET ;-).
使用
mapcar
,而不是map
。使用mapcar
,您的示例将产生:如果您
Mxdescribe-function RET map RET
,您将看到map
的签名不是您想要的预期的:Use
mapcar
, notmap
. Withmapcar
, your example yields:If you
M-x describe-function RET map RET
, you'll see the signature ofmap
is not what you expected: