首页 文章

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

提问于
浏览
0

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

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 回答

  • 1

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

    Edit

    既然你写了 f 好像 x 是一个列表,那么当你使用 List.fold_leftf 时,你实际上是在说它的参数应该是一个列表列表 . 这是错误消息告诉您的内容 . 如果你重写 f 以便 x 是一对(这是你想要的,我很确定),这将修复错误 .

相关问题