Je ne sais pas s'il y a une connexion, mais emballage F expressions # dans Citations peux vous donner un aperçu de la sémantique de la langue, et vous pouvez voir dans ce qui suit que les valeurs nommées sont en effet liés à l'ordre inverse comme indiqué dans FSI:
> <@ let languages = ("English", "Spanish", "Italian") in let x, y, z = languages in() @> |> string;;
val it : string =
"Let (languages,
NewTuple (Value ("English"), Value ("Spanish"), Value ("Italian")),
Let (z, TupleGet (languages, 2),
Let (y, TupleGet (languages, 1),
Let (x, TupleGet (languages, 0), Value (<null>)))))"
Notez que cela reste compatible avec @ réponse de Laurent, qui affirme que les expressions d'argument dans la construction de tuple sont évalués de gauche à droite. Dans l'exemple suivant, voir comment le résultat de la construction du tuple est lié à une valeur nommée intermédiaire, qui est ensuite déconstruite en utilisant des expressions TupleGet sans effets secondaires.
> <@ let x,y = (stdin.Read(), stdin.ReadLine()) in() @> |> string;;
val it : string =
"Let (patternInput,
NewTuple (Call (Some (Call (None, System.IO.TextReader ConsoleIn[Object](),
[])), Int32 Read(), []),
Call (Some (Call (None, System.IO.TextReader ConsoleIn[Object](),
[])), System.String ReadLine(), [])),
Let (y, TupleGet (patternInput, 1),
Let (x, TupleGet (patternInput, 0), Value (<null>))))"