Type Enregistrement I
Un type produit à composantes nommées.
Constructeur de type
donné par l'utilisateur
type ... = {lab_1 : t_1 ; .., lab_n : t_n}
Constructeur de valeur
syntaxe presque identique.
#type enfant = {nom : string ; age : int};;
Le type enfant est défini.
#let simon = {nom = "Simon" ; age = 9};;
simon : enfant = {nom = "Simon"; age = 9}
Notation pointée
#let nom {nom = n;age = a} = n;;
nom : enfant -> string = <fun>
#let nom {nom = n} = n;;
nom : enfant -> string = <fun>
#let nom x = x.nom;;
nom : enfant -> string = <fun>