0
因此,我正在編寫摺疊組合函數,以使其執行過濾。合併摺疊和過濾器
let filter_combine (pred: 'a -> bool) : a' list -> 'a list -> 'a list =
fun (x: 'a) (y: 'a list) -> x :: (filter pred y)
我沒有任何編譯問題,但我的兩個測試用例中有一個失敗。我的實施有什麼問題?
這是一個失敗的測試用例...
[-1; 1] = fold (filter_combine (fun (x: int) -> (abs x) mod 2 <> 0)) [] [-2; -1; 0; 1; 2]
這是工作的一個...
[-2; 2] = fold (filter_combine (fun (x: int) -> (abs x) > 1)) [] [-2; -1; 0; 1; 2]
'filter_combine'不正確,或者'filter'不是'List.filter'。 – didierc 2013-02-09 20:55:23
你應該提供'fold'和'filter'的簽名。 – didierc 2013-02-09 20:57:14