F#-在F#交互式窗口中显示完整结果
免责声明:Total F#新手问题 如果我在VisualStudio中的F#文件中键入以下内容F#-在F#交互式窗口中显示完整结果,f#,f#-interactive,F#,F# Interactive,免责声明:Total F#新手问题 如果我在VisualStudio中的F#文件中键入以下内容 #light let squares = seq { for x in 1 .. 10 -> x * x } printf "%A" squares 并通过高亮显示并按Alt+Enter在其上运行F#interactive,交互式窗口中的输出为 > seq [1; 4; 9; 16; ...] val squares : seq<int> > > 序号
#light
let squares =
seq { for x in 1 .. 10 -> x * x }
printf "%A" squares
并通过高亮显示并按Alt+Enter在其上运行F#interactive,交互式窗口中的输出为
>
seq [1; 4; 9; 16; ...]
val squares : seq<int>
>
>
序号[1;4;9;16;…]
瓦尔广场:seq
>
但我想看完整的序列,即
>
seq [1; 4; 9; 16; 25; 36; 49; 64; 81; 100]
val squares : seq<int>
>
>
序号[1;4;9;16;25;36;49;64;81;100]
瓦尔广场:seq
>
这可能吗?我希望有一个我错过的设置;它可能是无限的,这就是为什么FSI只显示前几个值。如果您想查看所有内容,一件简单的事情就是将其转换为列表,例如
printf "%A" (squares |> Seq.tolist)
如果要显示序列中的所有值而不转换为列表,可以直接在序列上迭代,如下所示:
Seq.iter (printfn "%A") squares
请注意,您正在冒险:如Brian所暗示的,如果序列是无限的,那么您可能会等待相当长的时间。(在这种情况下,
Seq.skip
和Seq.take
是您的朋友)另一种选择是将fsi.PrintLength
设置为适当大的数字,例如
> fsi.PrintLength <- 500
>fsi.PrintLength如果您得到像output“+[121个字符]
fsi.PrintWidth <- 500
fsi.PrintWidth谢谢Brian,这现在完全有意义了。是否可以要求fsi评估seq理解范围内的所有值(如果这是正确的术语)?@Russ,这就是将其转换为列表的有效方法…否则您必须执行seq.iter(printfn“%a”)square我注意printfn“%a”[1..2000]只显示前100个值。Benjol的解决方案将打印整个列表。@Juliet-我想这就是我昨天玩游戏时看到的。听起来迭代序列是查看值范围的最佳方式。我相信我很快会有更多的F#问题:)@Benjol:很抱歉提到死马,但你介意转y吗我们对答案的评论-该解决方案还将在相关注释中显示非常长的列表的结果(例如,当列表包含100多个项目时),该“iter”解决方案在将大型阵列整体打印到控制台时也有效,即Array.iter(printfn“%a”)