Précédent Index Suivant

3.3   Syntaxe des types de mini-ML

L'ensemble des types ( T) de mini-ML est construit à partir d'un ensemble de constantes de types ( C), un ensemble de variables de types ( P) et de 3 constructeurs de types (®, * et list).

La syntaxe abstraite des types de mini-ML est la suivante : type vartype =
* Unknown of int
* Instanciated of ml_type
* and consttype =
* Int_type
* Float_type
* String_type
* Bool_type
* Unit_type
* and ml_type =
* Var_type of vartype ref
* Const_type of consttype
* Pair_type of ml_type * ml_type
* List_type of ml_type
* Fun_type of ml_type * ml_type
* ;;
* Type vartype defined.
* Type consttype defined.
* Type ml_type defined. Où une variable de type est une référence sur une inconnue ou un type. Cela permettra d'effectuer une modification de types lors de l'application d'une substitution sur une variable de type.

La fonction de création de variables de type est la suivante : let new_unknown,reset_unknowns =
* let c = ref 1 in
* ( (function () ® c:=!c+1 Var_type( ref(Unknown !c))),
* (function () ® c:=1))
* ;;
* reset_unknowns : unit ® unit = áfunñ
* new_unknown : unit ® ml_type = áfunñ

L'ensemble des types qui vient d'être décrit correspondant aux types simples étendus par les constantes de type et les constructeurs pour les paires et les listes. Il est encore nécessaire de définir les schémas de type (type quantified_type). type quantified_type = Forall of (int list) * ml_type;;
* Type quantified_type defined.


Précédent Index Suivant