我想在同一遍中映射多個列表。這種模式有沒有名字?是否有'地圖'多個列表的名稱?
從本質上講,我找的基本上是類似於這樣的名字:
mapMultiple :: (([a,b]) -> c) -> [[a],[b]] -> [c]
但希望可以有兩個以上的列表(我的Haskell是生鏽的,我不知道如何寫這種類型的簽名)
對於更具體的東西,比方說我有名單A
和B
這樣的:
A = [1, 2, 3, 4] and B = ['A', 'B', 'C', 'D']
我希望能夠映射像這樣一個清單,B:
mapMultiple(([num, letter]) => ([ num, letter ]), [A, B]) == [[1,'A'], [2,'B'],[3,'C'],[4,'D']]
在粗糙的僞代碼,這裏是你將如何實現它:
mapMultiple = (fn, lists) => map(fn, zip(lists))
我尋找這種模式/功能的通用名稱。如果
獎勵積分你知道它的實現名稱(或者如果它沒有實現)在Ramda.js
絕對'zipWith'。作爲一種方法:'let xs = [1,2,3,4],ys = ['A','B','C','D']; xs.map((x,i)=> [x,ys [i]])'或作爲curried函數:'const zipWith = ys => xs => xs.map((x,i)=> [x ,ys [i]]); zipWith(YS)(XS);'。雖然我沒有ramda解決方案。 – ftor