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.