Files
saselang-bible/chapters/011-tuples.md
2026-09-13 10:20:16 +02:00

55 lines
1.3 KiB
Markdown

# 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<uint64,T>` 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`.
---