一千萬個為什麽

搜索

在多個列表上運行?

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)

最佳答案

Emacs在 cl 包中有 mapcar * ,它正是這樣做的。這是文檔:

將FUNCTION應用於SEQ的每個元素,並列出結果。   如果有多個SEQs,那麽用很多參數調用FUNCTION,   一旦最短列表用完,映射就會停止。只有一個   SEQ,這就像 mapcar 。有幾個,它就像Common Lisp    mapcar 函數擴展到任意序列類型。

轉載註明原文: 在多個列表上運行?