list - 是否有像 'map' 这样对参数列表列表而不是多个参数列表进行操作的函数的典型名称?

标签 list functional-programming dictionary lisp naming

(我终于发布并接受了“不,没有,而且这个问题实际上并不是那么笼统”的答案。)

考虑 Common Lisp 函数“mapcar”。它接受一个函数和一些列表作为参数,并使用从每个列表中相同位置提取的参数调用该函数。

标准库是否通常具有采用单个列表的类似函数,其中列表的每个元素都是该函数的参数列表?像通常称为“标准”或不“标准”的功能是什么? (这并不是一个 Lisp 问题,但它是我只知道一半的函数式语言+库。)

我想我是在问一个操作是否像(在伪 Lisp 中):

(mapcar (curry #'apply function-to-map) list-of-arg-lists)

已经有一个在多种语言或库中通用的名称(就像“map”和“reduce”是通用操作的名称一样,而不仅仅是特定的库函数)。

谢谢。

最佳答案

我推荐 map-applymapply 如果你想自己或在小组中使用它。

(defun map-apply (fn arg-lists)
    (mapcar (lambda (arg-list) (apply fn arg-list))
            arg-lists))

(map-apply #'+ '((1 2) (3 4 5)))
  =>
(3 12)

编辑 当然,如果你有 curry,你的不仅仅是伪 Lisp:

(defun curry (f &rest values)
    (lambda (&rest more-values)
        (apply f (append values more-values))))

关于list - 是否有像 'map' 这样对参数列表列表而不是多个参数列表进行操作的函数的典型名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2128708/

相关文章:

java - 当使用java 8 map、filter和collect时,它会创建新对象还是修改现有对象?

clojure - clojure 代码示例中的这个函数定义有什么作用?

c++ - 有没有办法防止在 STL unordered_map 上插入或删除?

python - 将带有列表的循环输出保存到 Python 中的字典中

c# - 如何将 List<> 绑定(bind)到 ListView 中的列

C - List在所有节点中递归保存数据

javascript - 创建动态的 SharePoint 列表(表单) - 前面的选择决定下一组问题

list - 检查列表是否有序

java - 为什么java排名第一?

.net - .Net 中没有 'payload' 值的字典