我正在使用 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/