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

如果我键入以下成在Visual Studio一个F#文件

#light

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

printf "%A" squares

和运行F#它互动通过高亮显示,然后按替代 + 输入,在交互窗口中的输出是

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

>

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

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

>

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

有帮助吗?

解决方案

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

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

其他提示

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

Seq.iter (printfn "%A") squares

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

另一种方法是fsi.PrintLength设定为适当大量,e.g。

> fsi.PrintLength <- 500
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top