Question

Disclaimer: Total F # Newbie question

Si je tape ce qui suit dans un fichier F # dans Visual Studio

#light

let squares =
    seq { for x in 1 .. 10 -> x * x }

printf "%A" squares

et exécuter F # interactive sur elle en mettant en valeur et en appuyant sur Alt + Entrée , la sortie dans la fenêtre interactive est

> 
seq [1; 4; 9; 16; ...]
val squares : seq<int>

>

Mais je veux voir la séquence complète i.e..

> 
seq [1; 4; 9; 16; 25; 36; 49; 64; 81; 100]
val squares : seq<int>

>

Est-ce possible? J'espère qu'il y ait un cadre pour cela que je l'ai raté.

Était-ce utile?

La solution

« ss » est une construction paresseuse-évaluée; il pourrait être infini, ce qui explique pourquoi les FSI ne montre que quelques premières valeurs. Si vous voulez voir tout cela, une chose facile à faire est de convertir à une liste, par exemple.

printf "%A" (squares |> Seq.tolist)

Autres conseils

Si vous voulez afficher toutes les valeurs de la séquence sans transformer en une liste, vous pouvez itérer directement sur la séquence comme ceci:

Seq.iter (printfn "%A") squares

Notez que vous prenez un risque: si, comme Brian laisse deviner, la séquence est infinie, vous pourriez être dans une attente assez longue. (Dans ce cas, Seq.skip et Seq.take sont vos amis)

Une autre solution consiste à mettre en fsi.PrintLength à un nombre suffisamment grand, par exemple.

> fsi.PrintLength <- 500
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top