Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何在OCaml中生成两个列表的成对乘积?_List_Ocaml_Product - Fatal编程技术网

List 如何在OCaml中生成两个列表的成对乘积?

List 如何在OCaml中生成两个列表的成对乘积?,list,ocaml,product,List,Ocaml,Product,如何编写使两个列表笛卡尔乘积的函数? 例如,我有这个 需要这个吗 ?模块列表中的功能组合,似乎符合您的要求 示例用法: let x = [1; 2; 3] let y = [4; 5; 6] List.combine x y (* => [(1, 4); (2, 5); (3, 6)] *) 请注意,该函数要求两个列表的长度相同。如果您希望它更灵活,您可能需要自己编写 如果您想使用任意函数组合列表,一种可能的方法是使用List.combine创建这个元组列表,然后使用List.ma

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

例如,我有这个

需要这个吗


模块
列表中的功能
组合
,似乎符合您的要求

示例用法:

let x = [1; 2; 3]
let y = [4; 5; 6]
List.combine x y    (* => [(1, 4); (2, 5); (3, 6)] *)
请注意,该函数要求两个列表的长度相同。如果您希望它更灵活,您可能需要自己编写


如果您想使用任意函数组合列表,一种可能的方法是使用
List.combine
创建这个元组列表,然后使用
List.map
从每对元组创建一个结果。

我没有做过任何OCaml开发,但考虑到它的功能背景,您要查找的函数通常命名为
zip
。根据,列表中有一个名为
combine
的函数似乎符合您的意图,但我不知道该引用有多权威。是的,list.combine可以做到这一点。但这看起来像是家庭作业,在这种情况下,列表模块中的函数可能被禁止……?这不是笛卡尔积!笛卡尔积是:[(a,d);(a,e);(a,f);(b,d);(b,e);(b,f);(c,d);(c,e);(c,f)]我对家庭作业问题没有投反对票。我投了反对票,因为这是OCaml中笛卡尔积的搜索结果,但问题是关于成对积的。我理解投票结果接近,但“离题”是错误的原因。看看对这个原因的描述。它应该已经关闭,因为没有显示足够的努力,添加了一个MWE,等等。非常感谢,但这个功能应该更常见,所以我不能声明Listsorry,不会帮你做家庭作业。使用模式匹配帮助编写递归函数。
[a*d;b*e;c*f]
let x = [1; 2; 3]
let y = [4; 5; 6]
List.combine x y    (* => [(1, 4); (2, 5); (3, 6)] *)