gpt4 book ai didi

linq - F#:在不使用 Seq.empty 的情况下编写空序列

转载 作者:行者123 更新时间:2023-12-02 06:55:07 25 4
gpt4 key购买 nike

我使用 F# 编写了自己的 LINQ 重新实现(感谢 Jon Skeet 的启发)。

我使用了一个技巧来生成空序列:

let empty<'b> =
seq {
for n = 0 to -1 do
yield Unchecked.defaultof<'b>
}

printfn "%A" empty<int> // -> seq []

有什么惯用的方法可以做到这一点吗?

(Seq.empty 没有用,我只是重新实现它)

最佳答案

我能想到的使用序列表达式的最简单实现是:

let empty() = seq { do () }

或者如果你想要一个通用值而不是一个函数:

let empty<'T> : seq<'T> = seq { do () }

人们可能只想为不产生任何值的序列表达式编写 seq { },但这在语法上是无效的,因此我们需要在里面做一些事情序列表达式。使用 do () 只是告诉编译器这是一个语法上有效的序列表达式,在求值时它不执行任何操作(并且不产生任何值)。

关于linq - F#:在不使用 Seq.empty 的情况下编写空序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33215651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com