gpt4 book ai didi

f# - F# 中更简单的 Seq.unfold

转载 作者:行者123 更新时间:2023-12-02 17:48:09 24 4
gpt4 key购买 nike

是否有一个更简单的 Seq.unfold 版本,只将前一个元素作为状态?我知道您可以轻松地调整 Seq.unfold 来执行此操作,但结果可读性不是很好。

最佳答案

我不认为有一个内置函数可以做到这一点。

使用 Seq.unfold 重复相同的模式会很烦人,但是您可以轻松地使用 unfold 来定义一个按您想要的方式运行的函数,然后只需使用新功能:

module Seq = 
let generate f v =
Seq.unfold (fun v -> let r = f v in Some(r, r)) v

顺便说一句,如果我想实现该模式,我可能会使用简单的递归序列表达式,这可能比使用 Seq.unfold 更容易阅读。 generate 函数可以这样实现:

let rec generate f v = seq {
yield v
yield! generate f (f v) }

它的行为有点不同,因为它也产生第一个值。不确定您想要什么行为。

关于f# - F# 中更简单的 Seq.unfold,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11882140/

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