compréhension de liste en F#
Je suis en train de faire quelques compréhension de liste en F#. Et j'ai trouvé cette.
let evens n =
{ for x in 1 .. n when x % 2 = 0 -> x }
print_any (evens 10)
let squarePoints n =
{ for x in 1 .. n
for y in 1 .. n -> x,y }
print_any (squarePoints 3)
La première fonctionne toujours ok, mais la deuxième est obsolète. La dernière (1.9.7.8) F# compilateur ne supporte pas ce style.
Après quelques recherche j'ai trouvé cela fonctionne
let vec1 = [1;2;3]
let vec2 = [4;5;6]
let products = [for x in vec1 do for y in vec2 do yield x*y]
Quelqu'un peut-il point pourquoi la syntaxe a changé? Merci.
InformationsquelleAutor Yin Zhu | 2009-12-11
Vous devez vous connecter pour publier un commentaire.
Boucles for imbriquées besoin d'un
do
.Vous devez utiliser
seq {..}
. La forme{..}
sansseq
ne fonctionne plus.Un
when
garde dans unfor
boucle motif n'est pas non plus supportés.print_any something
est obsolète. Utilisationprintf "%A" something
à la place.Ce code devrait fonctionner:
Vous pouvez toujours utiliser le
->
si tout ce que vous voulez faire est de retourner une seule valeur:En passant, je trouve intéressant de voir comment F# évolué au fil du temps. Dommage que les adopteurs précoces ont partiellement obsolète livres sur les étagères (pas que j'ai l'esprit).