Author: Christian.Queinnec@lip6.fr

## Applications developed in Objective CAML

A certain number of applications have been developed in Objective CAML. We will only speak of ``public'' applications, that is, those which anyone can use either freely or by buying them.
Like other functional languages, Objective CAML is a good compiler implementation language. The bootstrap1 of the `ocaml` compiler is a convincing example. As well, numerous language extensions have been contributed, as seen previously for parallel programming, but also for typing such as O'Labl (part of which is in the process of being integrated into Objective CAML, see appendix B) or for physical units. Links to these applications can be found on the ``Caml Hump''.
Objective CAML's second specialty concerns proof assistants. The major development in this area is the program Coq which accompanies the evolution of Caml almost since its origin. Historically, ML was conceived as the command language of the LCF (Logic for Computable Functions) system, before becoming independent of this application. It is thus natural to find it as the implementation language of an important theorem-proving program.
A third application domain concerns parallelism (see page ??) and communication of which a good example is the `Ensemble` system.

### Link

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

A list, not exhaustive, of significant applications developed in Objective CAML is maintained on Inria's Caml site:

### Link

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

Let us mention in particular `hevea` which is a LATEX to HTML translator which we have used to create the HTML version of this book found on the accompanying CD-ROM.

### Link

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

While of importance, the applications we've just mentioned don't represent what, at the beginning of this chapter, we christened a ``beacon application''. Moreover, they don't explore a new specialized domain demonstrating the relevance of using Objective CAML. It is not clear that this example can be issued from academia. It is more likely that it will come from industry, whether in conjunction with language standardization (and so its formal specification), or for the needs of applications having to integrate different programming and program organization styles.