如何在emacs lisp中将参数传递给map?

rob*_*ill 8 lisp emacs elisp

我想编写一个小函数来为列表添加值.它看起来像这样:

(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 barfs因为函数需要一个参数.我错过了什么?

谢谢罗伯特

p4b*_*bl0 16

这里没有足够参数的函数不是map你定义的函数.

map函数在Emacs Lisp中不存在,它由cl包提供.这个map函数需要3个参数,第一个必须是map应返回的类型.这个:

(map 'list 'plus-extra fares)
Run Code Online (Sandbox Code Playgroud)

将工作.但你想要的是这个:

(mapcar 'plus-extra fares)
Run Code Online (Sandbox Code Playgroud)

这是本地的elisp.

PS:别忘了Emacs附带了它的文档!C-h f map RET;-).

  • 部分功能应用:( mapcar(申请部分'+ 3.02)票价) (6认同)

san*_*inc 7

使用mapcar,而不是map.用mapcar,你的例子产生:

(34.160000000000004 31.14 28.12 25.099999999999998 22.08 19.06 16.04 13.02)
Run Code Online (Sandbox Code Playgroud)

如果您M-x describe-function RET map RET,您将看到签名map不符合您的预期:

(map TYPE FUNCTION SEQUENCE...)

Map a FUNCTION across one or more SEQUENCEs, returning a sequence.
TYPE is the sequence type to return.
Run Code Online (Sandbox Code Playgroud)