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.

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top