Next: Expressions
Up: Quelques éléments de Caml
Previous: Symboles, séparateurs, identificateurs
L'unique valeur rien a le type prédéfini unit; elle est notée () et est lue ``voi"de''. La valeur rien sert à compléter une conditionnelle à une seule branche (par else ()), à déclencher les procédures (print_newline ()), et comme instruction vide dans le corps d'une boucle.
Les booléens ont le type prédéfini bool, qui contient deux constantes true et false.
Les entiers ont le type prédéfini int. Les constantes entières sont une suite de chiffres décimaux, éventuellement précédée d'un signe -, comme 234, -128, ...Les valeurs extrémales dépendent de l'implémentation.
Les flottants ont le type prédéfini float. Les constantes flottantes sont une suite de chiffres décimaux comprenant un point, éventuellement suivie d'une indication d'exposant, comme 3.1416 ou 3141.6E-3 pour désigner .
Les caractères ont le type prédéfini char. Une constante
caractère est une lettre entourée du symbole `, comme
`à, `b`, ..., `+`, `:`.
Certains caractères sont codés spécialement comme `` pour le
changement de ligne, `` pour le retour charriot,
`` pour la tabulation,
`` pour le caractère apostrophe,
et `
` pour la barre oblique. Enfin, on dénote n'importe quel
caractère en le désignant par son numéro décimal
dans le code ASCII (American Standard
Codes for Information Interchange) (ISO-latin), sur trois chiffres et
précédé d'une barre oblique. Ainsi `32` désigne le caractère
espace et `33` est équivalent à `è.
La fonction int_of_char donne la valeur entre 0 et 255 dans le code ASCII du caractère. Inversement, la fonction char_of_int donne le caractère par son code ASCII.
Les chaînes de caractères ont le type prédéfini string. Ce sont des suites de caractères rangés consécutivement en mémoire. Une constante chaîne est une suite de caractères entourée de guillemets. Dans une chaîne, le caractère guillemet se note ¨ en ajoutant une barre oblique devant le guillemet, et les caractères spéciaux obéissent aux mêmes conventions que pour les constantes caractères. Les éléments d'une chaîne de caractères sont numérotés à partir de . On accède à l'élément i de la chaîne s à l'aide de la notation s.[i]. On remplace l'élément i de la chaîne s par la valeur c, à l'aide de la notation s.[i] <- c.
En évaluant make_string l c, on obtient une chaîne de caractères de longueur l, initialisée avec des caractères c. L'opérateur infixe ^ sert à concaténer deux chaînes, la fonction sub_string permet d'extraire une sous-chaîne, et la procédure blit_string de transférer des caractères d'une chaîne à une autre. Pour plus d'information, voir le module string de la librairie.
Les vecteurs ont le type prédéfini vect. Ce sont des suites d'éléments de même type, rangés consécutivement en mémoire. Une constante vecteur est une suite d'éléments séparés par des ; et entourée de ``parenthèses'' [| et |]. Par exemple:
#let v = [| 1; 2; 3 |];; v : int vect = [|1; 2; 3|]
Remarquons la notation suffixe pour le constructeur de type des vecteurs. Le type d'un vecteur d'entiers s'écrit int vect, et le type d'une matrice d'entiers int vect vect.
Les éléments d'un vecteur sont numérotés à partir de . On accède à l'élément i du vecteur v à l'aide de la notation v.(i). On remplace l'élément i du vecteur v par la valeur c, à l'aide de la notation v.(i) <- c. En évaluant make_vect l c, on obtient un vecteur de longueur l, initialisé avec l'élément c. On dispose aussi des fonctions sub_vect pour extraire des sous-chaînes et blit_vect pour transférer des éléments d'un vecteur à un autre. Pour plus d'information, voir le module vect de la librairie.
Les références ont le type prédéfini ref. Comme les vecteurs le constructeur de type des références ref utilise la notation suffixe. Une référence est construite par l'application du constructeur (de valeur) ref à sa valeur initiale. En évaluant ref v, on obtient une référence, initialisée avec la valeur v. On accède au contenu d'une référence r à l'aide de la notation !r. On remplace le contenu de la référence r par la valeur c, à l'aide de la notation r := c.
Les paires d'éléments de type t1 et t2 ont le type t1 * t2. On écrit la paire des valeurs v1 et v2 de la manière mathématique classique: (v1, v2). La notation s'étend aux n-uplets. Il n'y a pas de limitation à l'usage des n-uplets, qui peuvent être librement pris en argument et rendus en résultat des fonctions. Par exemple, la symétrie par rapport à l'origine du repère s'écrit:
#let symétrie (x, y) = (-x, -y);; symétrie : int * int -> int * int = <fun>
Attention, les n-uplets ne sont pas associatifs et .
1/11/1998