高阶函数 toList
higher-order-function toList
如何使用 set.fold 或 set.foldback 定义等同于 set.toList 的函数 toList?
我做了这个功能,但我很确定它不正确。
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]
任何tips/help?
下面的函数应该与Set.toList
执行相同的操作
let toList set = Set.foldBack (fun it acc -> it::acc) set []
使用 Set.fold 而不是 Set.foldBack 会颠倒结果列表的顺序。
您当前的函数具有根据谓词过滤列表的效果,相当于 List.filter。
如何使用 set.fold 或 set.foldback 定义等同于 set.toList 的函数 toList? 我做了这个功能,但我很确定它不正确。
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]
任何tips/help?
下面的函数应该与Set.toList
执行相同的操作let toList set = Set.foldBack (fun it acc -> it::acc) set []
使用 Set.fold 而不是 Set.foldBack 会颠倒结果列表的顺序。
您当前的函数具有根据谓词过滤列表的效果,相当于 List.filter。