Next: Égalité de types
Up: Quelques éléments de Caml
Previous: Types abréviations
Si, dans l'interface d'un module (voir ci-dessous), on exporte un type sans rien en préciser (sans donner la liste de ses champs s'il s'agit d'un type enregistrement, ni la liste de ses constructeurs s'il s'agit d'un type somme), on dit qu'on a abstrait ce type, ou qu'on l'a exporté abstraitement. Pour exporter abstraitement le type t, on écrit simplement
type t;;
L'utilisateur du module qui définit ce type abstrait n'a aucun moyen de savoir comment le type t est implémenté s'il n'a pas accès au source de l'implémentation du module. Cela permet de changer cette implémentation (par exemple pour l'optimiser) sans que l'utilisateur du module n'ait à modifier ses propres programmes. C'est le cas du type des piles dans l'interface du module stack décrit ci-dessous.