2014-11-16 41 views
0

所以我有像這樣如何使用List.fold_left ocaml的多個參數?

let test (item: 'a) (factors: items) : ('b list) = 
    .... 

此功能發生在一些「一元的項目和功能,我自己的項目類型,這是我傳遞給它的項目的另一份名單。我做了一些東西后返回一個不同類型的列表

如何使用List.fold_left這個函數,以便如果我有一個項目的列表,我可以單獨應用測試,通「因素」到所有這些,然後讓我可以級聯所得到的「b型列出了每一個。

例如,我需要處理以下列表:

[somea; someb; somec] 
as 
(test somea factors)@(test someb factors)@(test somec factors) 

這是一個任務List.fold_left不適用?有我可以使用的其他功能嗎?我不能遞歸遍歷和調用,因爲發生的事情與我的代碼中的其他方法,以便有另一種方式相互一些遞歸問題的功能? List.map在這裏會有用嗎?

回答

0

對於這個特殊的目的,事情會走的更好,如果factors是的test第一個參數。讓我們來調用這個函數fliptest

let fliptest a b = test b a 

所以,那麼你的函數看起來像這樣(在我看來):

let process factors list = 
    List.concat (List.map (fliptest factors) list) 

(如果這是不完全正確的,它可能接近)

+0

哈哈,這其實是我落得這樣做:P。我想我只是試圖首先迫使一個方形釘在一個圓孔中。謝謝你! –