在多个列表上运行?

时间:2010-01-31 00:53:06

标签: elisp

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)

1 个答案:

答案 0 :(得分:2)

Emacs在mapcar*包中的cl就是这样做的。这是文档:

  

将FUNCTION应用于SEQ的每个元素,并列出结果。   如果有多个SEQs,那么用很多参数调用FUNCTION,   一旦最短列表用完,映射就会停止。只有一个   SEQ,这就像mapcar。有几个,它就像Common Lisp   mapcar函数扩展到任意序列类型。