首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高阶函数toList

高阶函数toList
EN

Stack Overflow用户
提问于 2015-10-15 12:24:18
回答 1查看 115关注 0票数 1

如何通过使用toList或set.foldback来定义与set.toList等价的函数set.fold?我已经做了这个功能,但我很确定它是不正确的。

代码语言:javascript
复制
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]

有什么建议/帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-15 17:41:39

下面的函数应该执行与Set.toList相同的操作

代码语言:javascript
复制
let toList set = Set.foldBack (fun it acc -> it::acc) set []

使用Set.fold而不是Set.foldBack将颠倒结果列表的顺序。

您的当前函数将具有基于谓词筛选列表的效果,相当于List.filter。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33148526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档