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