如何在OCaml中制作两个列表的成对产品?

时间:2015-01-13 20:32:17

标签: list ocaml product

如何编写制作两个列表的笛卡尔积的函数?

例如,我有这个

[a;b;c][d;e;f]

需要这个

[a*d;b*e;c*f]

1 个答案:

答案 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>