ocaml函数接受tuple,tuple list返回一个tuple

ocaml函数接受tuple,tuple list返回一个tuple,ocaml,Ocaml,我有以下问题,我的函数获取tuple和pair的列表,它应该返回一个tuple,但是我得到的错误是 a is tuple contains (int*list) and x is list of pairs [(a1,b1).....(an,bn)] 我想做的是把两个列表加在一起,假设我传入[9;9][1;0;2],然后它应该返回一个[2;0;1],我使用列表。向左折叠尾部递归即可。这就是我所混淆的函数, 我通过考试 list.fold_left f (0;[]) (List.combine(

我有以下问题,我的函数获取tuple和pair的列表,它应该返回一个tuple,但是我得到的错误是

a is tuple contains (int*list) and x is list of pairs [(a1,b1).....(an,bn)]
我想做的是把两个列表加在一起,假设我传入
[9;9]
[1;0;2]
,然后它应该返回一个
[2;0;1]
,我使用
列表。向左折叠
尾部递归即可。这就是我所混淆的函数,
我通过考试

list.fold_left f (0;[]) (List.combine(List.rev(l1),List.rev(l2))
所以
a
应该是一个元组,包含
(int*list)

当您使用
list时,x是成对的列表。向左折叠
您的函数一次只能获取列表中的一个元素。在我看来,您的函数
f
的编写目的是希望得到一个
x
列表。但是
x
将只有一对(如果我正确阅读了您的代码)

编辑


既然您编写的
f
好像
x
是一个列表,那么当您使用
list.fold_left
f
时,您实际上是在说它的参数应该是一个列表列表。这就是错误消息告诉您的。如果您重写
f
,使
x
是一对(这是您想要的,我很确定),这将修复错误。

函数f返回一个元组(int*list),我可以问一下这是关于什么的吗?让(u,res)=List.fold_left f base args在resi中我认为x是args,它是一个成对右的列表,我是说它不是一个列表。这是一双。也许我错了,但我不这么认为!你好,但这是在说什么?let(u,res)=List.fold_在resIt中左f基args,表示函数f的编写就像
args
将是列表一样。但是
args
只是一个列表。