Author: Christian.Queinnec@lip6.fr

## Applications réalisées en Objective CAML

Un certain nombre d'applications ont été réalisées en Objective CAML. Nous ne parlerons que des applications << publiques >>, c'est-à-dire que l'on peut utiliser soit gratuitement soit en les achetant.
Comme les autres langages fonctionnels, Objective CAML est un bon langage d'implantation de compilateurs. Le bootstrap1 du compilateur `ocaml` en est un exemple probant. De même de nombreuses extensions au langage ont été apportées, comme vu précédemment pour la programmation parallèle, mais aussi sur le typage comme O'Labl (dont une partie est en cours d'intégration en Objective CAML, voir annexe B) ou sur les unités physiques. Les liens vers ces applications se retrouvent sur la << bosse du chameau >>.
La deuxième spécialité d'Objective CAML concerne les systèmes d'aide à la preuve. Le développement majeur en ce domaine est le logiciel Coq qui accompagne quasiment depuis son origine l'évolution de Caml. Historiquement, ML a été conçu comme langage de manipulation du système LCF (Logic for Computable Functions), avant de devenir indépendant de cette application. Il est donc naturel de le retrouver comme langage d'implantation d'un important système d'aide à la preuve.
Un troisième domaine d'application concerne le parallélisme (voir page ??) et la communication dont un bon exemple est le système `Ensemble`.

### Lien

http://www.cs.cornell.edu/Info/Projects/Ensemble/

Une liste, non exhaustive, d'applications significatives développées en Objective CAML est maintenue sur le site Caml de l'Inria :

### Lien

http://caml.inria.fr/users_programs-eng.html

Citons en particulier `hevea` qui est un traducteur LATEX vers HTML que nous avons utilisé pour réaliser la version HTML de ce livre qui se trouve sur le cédérom l'accompagnant.

### Lien

http://pauillac.inria.fr/~maranget/hevea/

Quoique d'importance, les applications que nous venons de citer ne représentent pas ce, qu'en début de ce chapitre, nous avons baptisé une << application phare >>. De même, elles n'explorent pas un nouveau domaine de spécialité montrant la pertinence d'utilisation d'Objective CAML. Il n'est pas évident que cet exemple puisse être issu du monde académique. Il est plus probable qu'il vienne du monde industriel, soit en liaison avec une normalisation du langage (voire sa spécification formelle), soit pour les besoins d'applications devant intégrer divers styles de programmation et de structuration du logiciel.