0

我有以下问题,我的函数采用元组和一对列表,它应该返回一个元组,但我收到错误消息说

a is tuple contains (int*list) and x is list of pairs [(a1,b1).....(an,bn)]

我想要做的是将两个列表加在一起假设我传入[9;9] [1;0;2]然后它应该返回 a [2;0;1],并且我使用list.fold_left尾递归来做到这一点。这是我感到困惑的功能,
我传入

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

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

4

1 回答 1

1

当您使用List.fold_left您的函数时,一次只能获取列表中的一个元素。在我看来,您的函数f被编写为期望将事物列表作为x. 但x将只是一对(如果我正确阅读您的代码)。

编辑

既然您写 your fas if xis a list ,那么当您使用List.fold_leftwith时f,您实质上是在说它的参数应该是一个列表列表。这就是错误消息告诉您的内容。如果你重写fx是一对(这是你想要的,我很确定),这将修复错误。

于 2013-02-01T04:36:30.790 回答