在Common Lisp: A Gentle Introduction to Symbolic Computation的第224页上,此示例与输出一起提供。
> (mapcar #'(lambda (x y) (list x 'gets y))
'(fred wilma george diane)
'(job1 job2 job3 job4))
((FRED GETS JOB1)
(WILMA GETS JOB2)
(GEORGE GETS JOB3)
(DIANE GETS JOB4))
有没有办法在Emacs Lisp中做同样的事情?另一个例子也很有趣,因为只产生了3个结果,即最短列表中的元素数量。
> (mapcar #'+ '(1 2 3) '(10 20 30 40 50))
(11 22 33)
答案 0 :(得分:2)
Emacs在mapcar*
包中的cl
就是这样做的。这是文档:
将FUNCTION应用于SEQ的每个元素,并列出结果。 如果有多个SEQs,那么用很多参数调用FUNCTION, 一旦最短列表用完,映射就会停止。只有一个 SEQ,这就像
mapcar
。有几个,它就像Common Lispmapcar
函数扩展到任意序列类型。