ocaml函数接受tuple,tuple list返回一个tuple
我有以下问题,我的函数获取tuple和pair的列表,它应该返回一个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(
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
只是一个列表。