【发布时间】:2022-01-20 21:48:27
【问题描述】:
我在 F# 代码中有一个错误,我已将其简化为以下最小复制序列,但现在我不明白为什么它会这样工作。
let duplicate element =
[ element; element ]
let passThrough (sq: seq<_>) =
use it = sq.GetEnumerator ()
seq {
while (it.MoveNext ()) do
yield it.Current
}
[<EntryPoint>]
let main _ =
[0; 1]
|> Seq.collect (duplicate)
(* |> Seq.toArray // When uncommented - works as expected. *)
|> passThrough
|> Seq.iter (fun i -> printf $"{i} ")
0
当Seq.toArray 调用未注释时,它会产生我期望的结果,即迭代序列管道并打印0 0 1 1。但是,注释掉该行后,代码就完成了,没有打印任何内容。
【问题讨论】:
标签: f#