【问题标题】:Operating on multiple lists?在多个列表上操作?
【发布时间】:2010-01-31 00:53:05
【问题描述】:

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)

【问题讨论】:

标签: elisp


【解决方案1】:

Emacs 的 cl 包中有 mapcar* 正是这样做的。这是文档:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2015-06-06
    • 2014-08-07
    • 2010-10-04
    • 2019-01-10
    • 2018-07-02
    • 1970-01-01
    相关资源
    最近更新 更多