2013-02-01 94 views
0

我有以下問題,在我的功能拍攝的元組和對的列表,它應該返回一個元組,但我得到了錯誤,說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是對

+0

好像沒人想給我一個提示? – user1968057

回答

1

的列表當您使用List.fold_left你的函數獲取只有一個元素一次列表。它在我看來像你的功能f是寫作期望列表的東西x。但x將只是一對(如果我正確地閱讀你的代碼)。

編輯

既然你寫你的f彷彿x是一個列表,那麼當你使用List.fold_leftf,你在本質上說,它的參數應該是列表的列表。這是錯誤信息告訴你的。如果你重寫f,使得x是一對(這是你想要的,我很確定),這將修復錯誤。

+0

函數f返回一個元組(int * list),我可以問一下這是怎麼回事? let(_,res)= List.fold_left f base args in res – user1968057

+0

我認爲x是args這是一對列表 – user1968057

+0

對,我說這不是一個列表。這是一對。也許我錯了,但我不這麼認爲!此致, –