(我终于发布并接受了“不,没有,而且这个问题实际上并不是那么笼统”的答案。)
考虑 Common Lisp 函数“mapcar”。它接受一个函数和一些列表作为参数,并使用从每个列表中相同位置提取的参数调用该函数。
标准库是否通常具有采用单个列表的类似函数,其中列表的每个元素都是该函数的参数列表?像通常称为“标准”或不“标准”的功能是什么? (这并不是一个 Lisp 问题,但它是我只知道一半的函数式语言+库。)
我想我是在问一个操作是否像(在伪 Lisp 中):
(mapcar (curry #'apply function-to-map) list-of-arg-lists)
已经有一个在多种语言或库中通用的名称(就像“map”和“reduce”是通用操作的名称一样,而不仅仅是特定的库函数)。
谢谢。
最佳答案
我推荐 map-apply
或 mapply
如果你想自己或在小组中使用它。
(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/