質問

免責事項: 合計 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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top