F# - F# 対話型ウィンドウに完全な結果を表示する
-
19-09-2019 - |
質問
免責事項: 合計 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 では最初のいくつかの値のみが表示されます。すべてを見たい場合は、リストに変換するのが簡単です。
printf "%A" (squares |> Seq.tolist)
他のヒント
リストに変換せずにシーケンス内のすべての値を表示したい場合は、次のようにシーケンスを直接反復できます。
Seq.iter (printfn "%A") squares
リスクを負っていることに注意してください。ブライアンがほのめかしているように、シーケンスが無限である場合、かなり長い待ち時間が発生する可能性があります。(この場合、 Seq.skip
そして Seq.take
あなたの友達です)
代わりに設定することもできます fsi.PrintLength
適切に大きな数に、例えば
> fsi.PrintLength <- 500
所属していません StackOverflow