我有以下问题,我的函数采用元组和对的列表,它应该返回一个元组,但我得到错误说,
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)
元组的元组列表
1 回答
当您使用
List.fold_left
时,您的函数一次只能获取列表中的一个元素 . 在我看来,你的函数f
被编写为期望一个事物列表为x
. 但x
只是一对(如果我正确地读你的代码) .Edit
既然你写了
f
好像x
是一个列表,那么当你使用List.fold_left
和f
时,你实际上是在说它的参数应该是一个列表列表 . 这是错误消息告诉您的内容 . 如果你重写f
以便x
是一对(这是你想要的,我很确定),这将修复错误 .