Adloun

Enregistrements et types mutuellement récursifs

Cours · OCaml (option informatique), chapitre 7 · prépas MPSI et MP, option informatique · le début du chapitre, la suite sur Adloun

Une classe, avec ses attributs et ses méthodes, et une classe fille qui en hérite.

7.1 Introduction et motivation

Le chapitre 3 a montré les types sommes : une valeur est l'une de plusieurs formes. Il manque leur complément, les types produits nommés : une valeur qui regroupe plusieurs champs à la fois — un point a une abscisse et une ordonnée, un étudiant a un nom et une note. Le n-uplet (chapitre 1) le faisait déjà, mais par position : dans (0.0, 1.0), lequel est l'abscisse ? L'enregistrement répond en nommant les champs.

Ce chapitre présente les enregistrements (immuables et mutables), puis les types mutuellement récursifs (déclarés ensemble avec and), qui permettent de modéliser des structures où deux notions se renvoient l'une à l'autre — un arbre et la forêt de ses sous-arbres, un système de fichiers et son contenu. Tout cela relève du niveau A.2 (utilisable après rappel).

7.2 Les enregistrements

Un enregistrement (record) regroupe plusieurs valeurs, chacune désignée par un nom de champ.

Définition 7.1Déclaration et notations

On déclare un type enregistrement en listant ses champs (en minuscule) avec leur type, entre accolades :


type point = { x : float; y : float }

On construit une valeur en donnant chaque champ, et on accède à un champ par la notation pointée :


let origine = { x = 0.0; y = 0.0 }
let abscisse p = p.x

# let p = { x = 3.0; y = 4.0 };;
val p : point = {x = 3.; y = 4.}
# p.x;;
- : float = 3.

Exercices du chapitre

La suite du cours · Tous les exercices du chapitre