F # - visualizzare i risultati completi in vetrina interattiva F #
-
19-09-2019 - |
Domanda
Disclaimer: Totale F # Newbie domanda
Se scriv il seguente in un file F # in Visual Studio
#light
let squares =
seq { for x in 1 .. 10 -> x * x }
printf "%A" squares
ed eseguire F # interattivo su di esso evidenziando e premendo Alt + Invio , l'output nella finestra interattiva è
>
seq [1; 4; 9; 16; ...]
val squares : seq<int>
>
Ma io voglio vedere il cioè sequenza completa.
>
seq [1; 4; 9; 16; 25; 36; 49; 64; 81; 100]
val squares : seq<int>
>
È possibile? Spero che ci sia una cornice a questo che ho perso.
Soluzione
'ss' è un costrutto pigramente-valutato; potrebbe essere infinita, ed è per questo FSI mostra solo i primi valori. Se volete vedere tutto, una cosa facile da fare è convertire in una lista, per es.
printf "%A" (squares |> Seq.tolist)
Altri suggerimenti
Se si desidera visualizzare tutti i valori nella sequenza senza trasformando in una lista, è possibile scorrere direttamente sulla sequenza in questo modo:
Seq.iter (printfn "%A") squares
Si noti che si sta prendendo un rischio: se, come suggerisce Brian, la sequenza è infinita, si potrebbe essere in per una piuttosto lunga attesa. (In questo caso, Seq.skip
e Seq.take
sono i tuoi amici)
Un'alternativa consiste nell'impostare fsi.PrintLength
ad un adeguato numero elevato, per esempio.
> fsi.PrintLength <- 500