F# - 显示在F#交互窗口全部结果(F# - Display full results in F#

2019-07-20 13:11发布

免责声明: F#新手问题!

如果我键入以下到Visual Studio中的一个F#文件

#light

let squares =
    seq { for x in 1 .. 10 -> x * x }

printf "%A" squares

并运行F#互动上突出显示,并按下Alt + Enter键 ,在交互式窗口输出

> 
seq [1; 4; 9; 16; ...]
val squares : seq<int>

>

但我想看到完整的序列,即

> 
seq [1; 4; 9; 16; 25; 36; 49; 64; 81; 100]
val squares : seq<int>

>

这可能吗? 我希望有这个,我已经错过了设置。

Answer 1:

“SEQ”是惰性计算构建体; 它可以是无限的,这就是为什么FSI只显示前几个值。 如果你想看到这一切,一件容易的事情做的是转换到一个列表,如

printf "%A" (squares |> Seq.tolist)


Answer 2:

如果你想不转化成列表,显示序列中所有的值,你可以像这样的顺序直接迭代:

Seq.iter (printfn "%A") squares

需要注意的是,你正在做一个风险:如果像布赖恩提示,该序列是无限的,你可以为一个相当漫长的等待是英寸 (在这种情况下, Seq.skipSeq.take是你的朋友)



Answer 3:

另一种方法是设置fsi.PrintLength至适当大的数,例如

> fsi.PrintLength <- 500


文章来源: F# - Display full results in F# interactive window