Author: Christian.Queinnec@lip6.fr

## Introduction

L'intérêt d'un langage informatique par rapport à un autre provient de la facilité de développer des applications dont l'exécution est sûre et dont la maintenance est aisée. La première partie de cet ouvrage consacrée à la présentation du langage Objective CAML va logiquement se clore avec la réalisation de plusieurs applications.
La première application propose l'implantation de quelques fonctions permettant l'expression de requêtes sur une base de données. L'accent est mis sur l'utilisation d'un style de programmation fonctionnel et sur les manipulations de listes. On peut ainsi fournir à l'utilisateur un ensemble de fonctions permettant d'exprimer et d'évaluer facilement ses requêtes en utilisant directement le langage Objective CAML. On montre au programmeur comment il peut facilement fournir à l'utilisateur la plupart des outils d'interrogation dont ce dernier peut avoir besoin.
La deuxième application est un interprète pour un petit BASIC1. Il est à noter que ce type de langage impératif a fait le succès des premiers micro-ordinateurs. Vingt ans après, cela semble fort simple à réaliser. Bien que BASIC soit un langage impératif, l'implantation de cet interprète utilisera plutôt la partie fonctionnelle d'Objective CAML, en particulier pour l'évaluation des instructions. Néanmoins les parties d'analyses lexicale et syntaxique du langage utilisent une structure physiquement modifiable.
La troisième application est un jeu à un joueur, le Démineur, bien connu car il est incorporé à l'installation standard des systèmes Windows. Le but du jeu est de découvrir un ensemble de mines cachées en envoyant des sondes qui indiquent le nombre de mines autour d'une case déterminée. L'implantation utilise plutôt la partie impérative du langage, car la structure de données sous-jacente est un tableau à deux dimensions qui sera physiquement modifié à chaque coup joué. Cette application utilise le module `Graphics` pour le dessin du jeu et pour gérer l'interaction avec le joueur. Néanmoins la détection des cases à découvrir sera réalisée dans un style plus fonctionnel.
Cette dernière application fera appel à des fonctions du module `Graphics` décrit au chapitre 5 (voir page ??) ainsi qu'à quelques fonctions des modules `Random` et `Sys` (voir chapitre 8, pages ?? et ??).