f# - 从 F# 中的序列构造中调用函数

标签 f# sequence

我在从序列构造中调用函数时遇到问题。 显然,这个函数被懒惰地调用,以至于整个代码 不会产生预期的结果。这是代码:

 mylist
 |> fun myseq -> 
    seq { for b in mylist do yield { b with status = (getStatus b)}}

这里,mylist 是一个记录列表。我打算用它构建一个序列 从函数 getStatus 更新字段状态。它只是做 不起作用,该函数似乎不会针对 for 循环符合预期。

感谢任何帮助。

最佳答案

序列是惰性的。在枚举序列之前,您的函数不会运行。

您需要将序列转换为具体的集合类型,例如列表或数组(这将枚举序列并强制您的函数运行):

seq { for b in mylist do yield { b with status = getStatus b } }
|> Seq.toList

或者,如果您只关心副作用(这不是您的情况),请使用 Seq.iter

关于f# - 从 F# 中的序列构造中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35386334/

相关文章:

f# - 功能增量

f# - 整理我的相互递归类型

Kotlin Path.useLines { } - 如何不获取 IOException ("Stream closed")?

r - 二十一点 ace 序列

r - 每第 n 个范围递增 R

f# - cons::F# 中序列的运算符?

error-handling - 使用gulp序列和gulp水管工

unit-testing - 函数组合的单元测试准确性

f# - Seq.filter 和 infinite 似乎违反直觉

python - 在 Python 或 F# 中运行带参数的批处理文件