如何编写制作两个列表的笛卡尔积的函数?
例如,我有这个
[a;b;c][d;e;f]
需要这个
[a*d;b*e;c*f]
答案 0 :(得分:2)
combine
模块中的函数List
似乎符合您的要求。 See documentation
样本用法:
let x = [1; 2; 3]
let y = [4; 5; 6]
List.combine x y (* => [(1, 4); (2, 5); (3, 6)] *)
请注意,该函数要求两个列表的长度相同。如果您希望它更灵活,您可能需要自己编写。
如果您想使用任意函数组合列表,一种可能的方法是使用List.combine
创建此元组列表,然后使用List.map
从每对创建结果。< / p>