ocaml函数使用元组和元组列表返回元组

时间:2013-02-01 03:27:49

标签: 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是对的列表

1 个答案:

答案 0 :(得分:1)

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

修改

由于您编写了f,好像x是一个列表,那么当您使用List.fold_left f时,您实际上是在说它的论点应该是列表清单。这是错误消息告诉您的内容。如果你重写f以便x是一对(这是你想要的,我很确定),这将解决错误。