所以我正在为 fold 编写一个组合函数,让它执行过滤。
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]