Quelles sont les structures de données de base en Caml ?

Contacter l'auteur Pierre.Weis@inria.fr

Fichier créé en octobre 1995.

Caml offre les structures de données suivantes: les nombres (entiers ou flottants), les booléens, les caractères, les chaînes de caractères, les tableaux, les listes, les références. La bibliothèque standard définit aussi des structures de données plus complexes, par exemple les ensembles et les flux, voir plus bas.

Si aucune de ces structures de données ne répond à votre problème, il vous faut définir vos propres structures de données, à l'aide de définitions de type.

Table des matières:

Les nombres: entiers et flottants.

Les nombres entiers et flottants correspondent à l'arithmétique de la machine. Ces nombres sont donc faciles à utiliser mais souffrent de certaines limitations dues au matériel, soit en ce qui concerne la précision, soit en ce qui concerne la taille. Caml vous offre aussi des nombres qui ne présentent pas ces limitations: la bibliothèque d'arithmétique en grande précision implémente des nombres rationnels, dont la taille peut croître jusqu'à plusieurs milliers de chiffres décimaux. Cette arithmétique rationnelle est plus délicate à utiliser que l'arithmétique standard de la machine.

Les caractères

Les caractères sont les éléments du type char. On les note en entourant le caractère par le symbole `:

#`a`;;
- : char = `a`
#`\n`;;
- : char = `\n`
#`\\`;;
- : char = `\\`

Autres opérations:

Les chaînes de caractères

Les chaînes de caractères sont les éléments du type string; ce sont des suites ordonnées de lettres. La taille d'une chaîne de caractères est fixée à la création de la chaîne. Les éléments d'une chaîne de caractères sont modifiables.

Les tableaux

Les tableaux ou vecteurs sont les éléments du type 'a vect; ce sont des suites ordonnées d'éléments du type 'a. La taille d'un tableau est fixée à la création du tableau. Les éléments d'un tableau sont modifiables.

Les listes

Les listes sont les éléments du type 'a list; ce sont des suites ordonnées d'éléments du type 'a. La taille d'une liste évolue dynamiquement, puisqu'on peut lui ajouter des éléments si nécessaire. Une liste est une structure de données récursive: elle est soit vide, et c'est alors [] (qu'on prononce ``nil''), ou bien elle ne l'est pas et elle est alors formée d'une ``tête'' de liste, placée devant le ``reste'' (ou queue) de la liste. Une liste non vide est formée par application du constructeur de liste :: (opérateur infixe qu'on prononce ``conse''). Une liste non vide de tête ``x'' et de queue ``rest'' est donc de la forme x :: rest. Les éléments d'une liste ne sont pas modifiables.

Les booléens

Les booléens sont les éléments du type bool; ce sont les valeurs de la logique booléenne true et false. Ce sont les résultats rendu par les tests.

#1 = 2;;
- : bool = false
#1 <= 2;;
- : bool = true

Les opérations définies sur les booléens sont les opérations infixes ``ou'' et ``et'' de la logique (opérateurs notés respectivement || et &&), et la négation (fonction not).

#(1 = 2) || not (1 <= 2);;
- : bool = false
#1 = 2 || not 1 <= 2;;
- : bool = false

Autres opérations:

Le rien

``rien'' est l'unique élément du type unit. Il est noté () (prononcer ``voïde'') et sert de résultat et d'argument non significatifs pour les procédures.

#print_string "Hello World!";;
Hello World!- : unit = ()
#print_newline();;

- : unit = ()

Les références

Les références sont les éléments du type 'a ref; ce sont des cases mémoire contenant une valeur de type 'a. On les utilise dans la programmation impérative pour implémenter des accumulateurs. L'élément contenu dans une référence peut être modifié, c'est-à-dire remplacé par une autre valeur du même type.

Les paires

Les paires d'une valeur de type 'a et d'une valeur du type 'b sont les éléments du produit cartésien de 'a et 'b, que l'on note 'a * 'b en Caml.

Les autres structures de données

Les autres structures de données disponibles dépendent du système Caml. Citons celles de la bibliothèque du système Caml Light:


Page de présentation de Caml Dernière modification: vendredi 26 mars 2004
Copyright © 1995 - 2004, INRIA tous droits réservés.

Contacter l'auteur Pierre.Weis@inria.fr