我的函数使用tuple和一个对的列表,它应该返回一个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],而im则使用list.fold_left尾递归来完成这个任务。这是我搞不懂的函数,
我通过了
list.fold_left f (0;[]) (List.combine(List.rev(l1),List.rev(l2))所以a应该是包含(int*list) x的元组,是对的列表。
发布于 2013-02-01 04:36:30
当您使用List.fold_left时,您的函数一次只获得列表的一个元素。在我看来,您的函数f是为了期望x列表而编写的。但是x只是一对(如果我正确地阅读了您的代码)。
编辑
因为您编写f时就好像x是一个列表一样,那么当您将List.fold_left与f一起使用时,您实际上是在说它的参数应该是一个列表列表。这就是错误信息告诉你的。如果重写f,使x是一对(我敢肯定,这正是您想要的),这将修复错误。
https://stackoverflow.com/questions/14639244
复制相似问题