Types¶
Galois dispose d'un système de types statique avec inférence automatique.
Types primitifs¶
entier¶
Nombre entier signé sur 64 bits.
décimal¶
Nombre à virgule flottante double précision (64 bits).
texte¶
Chaîne de caractères Unicode.
soit bonjour = "Bonjour le monde"
soit échappé = "Ligne 1\nLigne 2"
soit guillemets = "Il a dit \"bonjour\""
Séquences d'échappement supportées :
| Séquence | Caractère |
|---|---|
\n |
Nouvelle ligne |
\t |
Tabulation |
\r |
Retour chariot |
\\ |
Antislash |
\" |
Guillemet double |
\' |
Guillemet simple |
\0 |
Caractère nul |
booléen¶
Valeur logique, vrai ou faux.
nul et rien¶
nul— représente l'absence de valeurrien— type de retour des fonctions ne renvoyant rien (équivalent devoid)
Types de collection¶
tableau<T>¶
Tableau à taille fixe ou dynamique.
liste<T>¶
Liste dynamique ordonnée.
pile<T>¶
Structure LIFO (dernier entré, premier sorti).
soit p: pile<entier> = nouvelle pile<entier>()
p.empiler(1)
p.empiler(2)
soit sommet = p.dépiler() // 2
file<T>¶
Structure FIFO (premier entré, premier sorti).
soit f: file<texte> = nouvelle file<texte>()
f.enfiler("premier")
f.enfiler("deuxième")
soit tête = f.défiler() // "premier"
liste_chaînée<T>¶
Liste chaînée avec insertion/suppression efficace.
dictionnaire<K, V>¶
Association clé-valeur.
ensemble<T>¶
Collection sans doublons.
tuple¶
Regroupement de valeurs de types différents.
Types fonctionnels¶
Types FFI¶
Pour l'interopérabilité avec le C :
| Type Galois | Type C équivalent |
|---|---|
c_int |
int |
c_long |
long |
c_double |
double |
c_char |
char |
pointeur<T> |
T* |
pointeur_vide |
void* |
Inférence de types¶
Galois infère automatiquement les types lorsque c'est possible :
soit x = 42 // inféré comme entier
soit y = 3.14 // inféré comme décimal
soit nom = "Galois" // inféré comme texte
soit ok = vrai // inféré comme booléen
Les annotations de type sont optionnelles mais recommandées pour les signatures de fonctions :