具有F#中Seq.unfold的Seq.cache >>

问题描述 投票:0回答:1

我正在尝试缓存无限个三角形数字序列的结果。

let triCalc n = (n*(n+1))/2
let triNumC = 0 |> Seq.unfold (fun n -> Some((triCalc n, n+1))) |> Seq.cache

但是,当我尝试缓存时,它似乎并没有按照我的预期工作

let x = Seq.take 4 (triNumC)
let y = Seq.take 4 (triNumC)

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

此打印

seq [0; 1; 3; 6]seq [0; 1; 3; 6]

我缓存不正确吗?不应该打印第二个序列吗?我不太确定如何取得进展。

我正在尝试缓存无限数量的三角形数字的结果。 let triCalc n =(n *(n + 1))/ 2 let triNumC = 0 |> Seq.unfold(fun n-> Some((tricalc n,n + 1)))|> Seq.cache但是,.. 。

f# seq unfold
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.