This commit is contained in:
2026-09-12 08:56:27 +02:00
parent 426aa92d0d
commit 18306bdc8c
116 changed files with 11080 additions and 0 deletions

54
chapters/011-tuples.md Normal file
View File

@@ -0,0 +1,54 @@
# 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 `Ordering::Unordered`, le tuple est `Unordered`.
---