Javascript 是否有“映射”多个列表的名称?

Javascript 是否有“映射”多个列表的名称?,javascript,haskell,functional-programming,ramda.js,Javascript,Haskell,Functional Programming,Ramda.js,我想在同一关卡中映射多个列表。这个图案有名字吗 本质上,我在寻找与此基本相似的名称: mapMultiple::[a,b]->c->[a],[b]]->[c] 但希望能有两个以上的列表,我的haskell已经生锈了,我不知道如何写那个类型的签名 对于更具体的内容,假设我有列表A和B,如下所示: A=[1,2,3,4]和B=['A','B','C','D'] 我希望能够映射a和B的列表,如下所示: mapMultiple[num,letter]=>[num,letter],[A,B]=[[1,'A

我想在同一关卡中映射多个列表。这个图案有名字吗

本质上,我在寻找与此基本相似的名称:

mapMultiple::[a,b]->c->[a],[b]]->[c]

但希望能有两个以上的列表,我的haskell已经生锈了,我不知道如何写那个类型的签名

对于更具体的内容,假设我有列表A和B,如下所示:

A=[1,2,3,4]和B=['A','B','C','D']

我希望能够映射a和B的列表,如下所示:

mapMultiple[num,letter]=>[num,letter],[A,B]=[[1,'A'],[2,'B'],[3,'C'],[4,'D']]

在粗略的psuedo代码中,您将如何实现它:

mapMultiple = (fn, lists) => map(fn, zip(lists))
我正在寻找此模式/函数的通用名称

如果您知道它的实现名称,或者它没有在Ramda.js中实现,那么您可以获得额外的积分:[a,b]->c->[[a],[b]]->[c]

在Haskell中,[]::*->*即它接受一个类型并返回一个类型。因此,[[a][b]即[a][b]]没有意义

你可能想用2元组

mapMultiple::a,b->c->[a],[b]->[c]

在这种情况下,看看zip::[a]->[b]->[a,b]。你可能要找的是地图f。未修剪的拉链。

mapMultiple::[a,b]->c->[[a],[b]]->[c]

在Haskell中,[]::*->*即它接受一个类型并返回一个类型。因此,[[a][b]即[a][b]]没有意义

你可能想用2元组

mapMultiple::a,b->c->[a],[b]->[c]


在这种情况下,看看zip::[a]->[b]->[a,b]。你可能要找的是地图f。uncurry zip.

也许您正在寻找zipWith,它是Haskell中的zip+map:

> zipWith (*) [1,2,3] [4,5,6]
[4,10,18]
也是

或zipList3用于3个列表:

> zipWith3 (\a b c -> a+2*b+3*c) [1,2,3] [4,5,6] [7,8,9]
[30,36,42]
ZipList应用程序以更详细的内容为代价,将其推广到任意数量的静态已知列表:

> (\a b c d -> a+2*b+3*c+4*d) <$> ZipList [1,2,3] <*> ZipList [4,5,6] <*> ZipList [7,8,9] <*> ZipList [10,11,12]
ZipList {getZipList = [70,80,90]}

也许您正在寻找zipWith,它是Haskell中的zip+map:

> zipWith (*) [1,2,3] [4,5,6]
[4,10,18]
也是

或zipList3用于3个列表:

> zipWith3 (\a b c -> a+2*b+3*c) [1,2,3] [4,5,6] [7,8,9]
[30,36,42]
ZipList应用程序以更详细的内容为代价,将其推广到任意数量的静态已知列表:

> (\a b c d -> a+2*b+3*c+4*d) <$> ZipList [1,2,3] <*> ZipList [4,5,6] <*> ZipList [7,8,9] <*> ZipList [10,11,12]
ZipList {getZipList = [70,80,90]}
肯定是齐普威思。作为一种方法:让xs=[1,2,3,4],ys=['a','B','C','D'];xs.mapx,i=>[x,ys[i]]或作为一个常用函数:const zipWith=ys=>xs=>xs.mapx,i=>[x,ys[i]];zipWithysxs;。我没有拉姆达的解决方案,肯定是齐普威思。作为一种方法:让xs=[1,2,3,4],ys=['a','B','C','D'];xs.mapx,i=>[x,ys[i]]或作为一个常用函数:const zipWith=ys=>xs=>xs.mapx,i=>[x,ys[i]];zipWithysxs;。但我没有一个拉姆达解决方案。