Table des matières
1 Quelques idées sur le typage 1
1.1 Pourquoi des types ? ................................... 1
1.2 types génériques ..................................... 2
1.3 Les constructeurs des types génériques ......................... 2
1.4 Fonctions à profil générique ............................... 2
2 Introduction à Caml(light) 4
2.1 Premiers pas en Caml .................................. 4
2.2 Quelques types de base en Caml ............................ 6
2.2.1 Type unit .................................... 6
2.2.2 Types int et float ............................... 6
2.2.3 Type bool .................................... 8
2.2.4 Les types char et string ............................ 8
2.2.5 Produits cartésiens ................................ 9
2.2.6 Deux types définis par l’utilisateur ....................... 9
2.3 Les fonctions, premiers pas ............................... 11
2.4 Le filtrage ......................................... 14
2.5 Structures de contrôle .................................. 15
2.5.1 Structure conditionnelle ............................. 16
2.5.2 Boucle for ..................................... 16
2.5.3 Les références ................................... 16
2.5.4 Boucle while ................................... 19
2.6 Filtrage et récursivité .................................. 20
2.6.1 Principe général ................................. 20
2.6.2 Remplacement des boucles ........................... 21
2.6.3 Remplacement des références .......................... 22
2.7 Récursivité terminale ................................... 22
2.8 Tableaux ......................................... 24
2.9 Listes ........................................... 25
3 Structures de données 29
3.1 À propos des structures de données ........................... 29
3.2 Piles ............................................ 30
3.2.1 Spécification ................................... 30
3.2.2 Implémentations ................................. 31
3.2.3 intérêt ....................................... 32
3.2.4 Une application .................................. 33
3.3 Files ............................................ 35
3.3.1 Spécification ................................... 35
3.3.2 Implémentations ................................. 36
3.3.3 Files de priorité .................................. 41
3.4 Dictionnaires ....................................... 42
3.4.1 Spécification ................................... 42
3.4.2 Implémentations ................................. 42
3.5 Arbres ........................................... 42
3.5.1 Aspects informels ................................. 43
3.5.2 Aspects formels .................................. 45
3.5.3 Spécification ................................... 48
3.5.4 Implémentation .................................. 49
i