如何通过使用toList或set.foldback来定义与set.toList等价的函数set.fold?我已经做了这个功能,但我很确定它是不正确的。
let toList predicate items =
List.foldBack (fun item state ->
match predicate item with
| false -> state
| true -> item::state
)
items
[]
//test
toList (fun x -> x > 0) [-2;-1;0;1;2]
//output
//val toList : predicate:('a -> bool) -> items:'a list -> 'a list
//val it : int list = [1; 2]有什么建议/帮助吗?
发布于 2015-10-15 17:41:39
下面的函数应该执行与Set.toList相同的操作
let toList set = Set.foldBack (fun it acc -> it::acc) set []使用Set.fold而不是Set.foldBack将颠倒结果列表的顺序。
您的当前函数将具有基于谓词筛选列表的效果,相当于List.filter。
https://stackoverflow.com/questions/33148526
复制相似问题