首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Seq.cache与Seq.unfold in F#

Seq.cache与Seq.unfold in F#
EN

Stack Overflow用户
提问于 2020-05-24 13:26:06
回答 1查看 101关注 0票数 1

我试图缓存无限三角形数序列的结果。

代码语言:javascript
复制
let triCalc n = (n*(n+1))/2
let triNumC = 0 |> Seq.unfold (fun n -> Some((triCalc n, n+1))) |> Seq.cache

但是,当我尝试缓存时,它似乎不像我所期望的那样工作。

代码语言:javascript
复制
let x = Seq.take 4 (triNumC)
let y = Seq.take 4 (triNumC)

printf "%A" x
printf "%A" y

这个指纹

代码语言:javascript
复制
seq [0; 1; 3; 6]seq [0; 1; 3; 6]

我的缓存不正确吗?打印的第二个序列不应该是第一个序列的延续吗?我不太清楚如何取得进展。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-24 14:32:50

如果要继续,则需要跳过。序列保持不变

代码语言:javascript
复制
let y = triNumC
        |> Seq.skip 4
        |> Seq.take 4

缓存是可以的。缓存的好处是,当计算y时,从第5个项开始,因为前4个已经缓存。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61986617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档