list - F# 使用 set.fold 设置为列表

标签 list f# set

我正在使用 F# 进行编程,并尝试使用 Set.fold 将集合放入列表中。

到目前为止我做了什么:

let list sa = Set.fold (fun se sa -> sa) [];;

但它似乎并没有将集合放入列表中,而是创建了一个 将一组列表合并为一个列表。

我可以对我的代码进行哪些更改,以便它不会将一组列表放入列表中,而是将一组列表放入列表中。

最佳答案

let toList s = Set.fold (fun l se -> se::l) [] s

fold 的第一个参数是带有两个参数的函数:应从 fold 返回的类型的累加器(在您的情况下为 list) ,并且集合 fold 的单个元素适用于(在您的情况下为 Set 的元素)。此函数应返回与作为第一个参数传递的累加器相同的类型(在您的情况下为 list )。因此该函数应该将集合的当前元素添加到列表累加器中。

fold 的第二个参数是初始累加器状态(在您的情况下为空 list)。

在您的情况下,fold 的第三个参数是您想要转换为 list 的 Set

关于list - F# 使用 set.fold 设置为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33056788/

相关文章:

f# - System.Linq.Enumerable.OfType<T> - 有 F# 方法吗?

redis 从集合中删除特定成员

python - 编写一个 AND 查询以在数据集中查找匹配的文档(python)

Swift 可变集 : Duplicate element found

list - 如何在 Haskell 中定义对函数的递归调用列表

php - 嵌套列表中的 jQuery 奇偶数

c - 将结构添加到列表并获得正确的输出

java - 从字符串集列表到普通列表

f# - 从两个列表中删除相同的值并使用 F# 中的 List.fold 比较它们

f# - 即使被迫失败,F# 中的 Expecto 测试也始终通过