# 11. Tuples ## 11.1 Nature — V1 REQUIS — FIGÉ Un tuple est un type structurel anonyme, hétérogène, d'arité fixe. Il n'a pas de `.saseltype`. ```text (int32, String) ``` `(T)` est un groupement, pas un tuple à un élément. Il n'existe pas de tuple `()` ; `Void` exprime l'absence de valeur. Arity minimale : 2. ## 11.2 Champs — V1 REQUIS — FIGÉ Les tuples ne possèdent pas de noms de membres persistants. Si des champs nommés stables sont nécessaires, utiliser une `struct`. La déstructuration peut nommer des variables locales : ```text (int32 id, String name) = value; ``` Ces noms ne changent pas le type du tuple. ## 11.3 Indexation — V1 REQUIS — FIGÉ Accès positionnel : ```text tuple[0] tuple[1] ``` L'index doit être une constante connue à la compilation puisque le type de retour peut varier suivant la position. Le tuple n'implémente donc pas un `OpIndex` homogène ordinaire. ## 11.4 Égalité/comparaison intrinsèque — V1 REQUIS — FIGÉ Si tous les éléments permettent l'égalité pertinente, le tuple peut être comparé composant par composant. Si tous les éléments sont comparables, l'ordre du tuple est lexicographique. Si un composant comparé retourne `PartialOrdering::Unordered`, le résultat de comparaison du tuple est `PartialOrdering::Unordered`. ---