2013-02-01 99 views
0

我有以下问题,在我的功能拍摄的元组和对的列表,它应该返回一个元组,但我得到了错误,说ocaml的函数需要元组和元组列表中返回一个元组

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尾递归来做到这一点。这是功能我得到了迷惑一下,
我通过在

list.fold_left f (0;[]) (List.combine(List.rev(l1),List.rev(l2)) 

所以a应该是一个元组包含(int*list) x是对

+0

好像没人想给我一个提示? – user1968057

回答

1

的列表当您使用List.fold_left你的函数获取只有一个元素一次列表。它在我看来像你的功能f是写作期望列表的东西x。但x将只是一对(如果我正确地阅读你的代码)。

编辑

既然你写你的f仿佛x是一个列表,那么当你使用List.fold_leftf,你在本质上说,它的参数应该是列表的列表。这是错误信息告诉你的。如果你重写f,使得x是一对(这是你想要的,我很确定),这将修复错误。

+0

函数f返回一个元组(int * list),我可以问一下这是怎么回事? let(_,res)= List.fold_left f base args in res – user1968057

+0

我认为x是args这是一对列表 – user1968057

+0

对,我说这不是一个列表。这是一对。也许我错了,但我不这么认为!此致, –