Outline of the book
The present work consists of four main parts, bracketed by two chapters
and enhanced by two appendices, a bibliography, an index of language
elements and an index of programming concepts.
Each chapter consists of a general presentation of the subject being
introduced, a chapter outline, the various sections thereof, statements of
exercises to carry out, a summary, and a final section entitled
``To learn more'' which indicates bibliographic
references for the subject which has been introduced.
Chapter 1 :
- This chapter
describes how to install version 2.04 of the Objective CAML language on the
most current systems (Windows, Unix and MacOS).
- Part I: Core of the language
The first part is a complete presentation of the basic elements of the
Objective CAML language. Chapter 2 is a dive into the functional
core of the language. Chapter 3 is a continuation of the
previous one and describes the imperative part of the language. Chapter
4 compares the ``pure'' functional and imperative styles,
then presents their joint use. Chapter 5 presents the graphics
library. Chapter 6 exhibits three
applications: management of a simple database, a mini-Basic interpreter and
a well-known single-player game, minesweeper.
- Part II: Development tools
The second part of the book describes the various tools for application
development. Chapter 7 compares the various
compilation modes, which are the interactive toplevel and command-line
bytecode and native code compilers. Chapter 8
presents the principal libraries provided with the language distribution.
Chapter 9 explains garbage collection mechanisms and details
the one used by Objective CAML. Chapter 10 explains the use of
tools for debugging and profiling programs. Chapter 11
addresses lexical and syntactic tools. Chapter 12 shows
how to interface Objective CAML programs with C. Chapter
13 constructs a library and an application.
This library offers tools for the construction of GUIs. The application is
a search for least-cost paths within a graph, whose GUI uses the preceding
- Part III: Organization of applications
The third part describes the two ways of organizing a program: with
modules, and with objects. Chapter 14 is a presentation of
simple and parameterized language modules. Chapter 15
introduces Objective CAML object-oriented extension. Chapter
16 compares these two types of organization and
indicates the usefulness of mixing them to increase the extensibility of
programs. Chapter 17 describes two substantial
applications: two-player games which put to work several parameterized
modules used for two different games, and a simulation of a robot world
demonstrating interobject communication.
- Part IV: Concurrence and distribution
The fourth part introduces concurrent and distributed programs while
detailing communication between processes, lightweight or not, and on the
Internet. Chapter 18 demonstrates the direct link between the
language and the system libraries, in particular the notions of process and
communication. Chapter 19 leads to the lack of determinism of
concurrent programming while presenting Objective CAML's threads. Chapter
interprocess communication via sockets in the distributed memory model.
Chapter 21 presents first
of all a toolbox for client-server applications. It is subsequently used
to extend the robots of the previous part to the client-server model.
Finally, we adapt some of the programs already encountered in the form of
an HTTP server.
- Chapter 22
- This last chapter
takes stock of application development in Objective CAML and presents the
best-known applications of the ML language family.
- The first appendix explains the notion of cyclic
types used in the typing of objects. The second appendix describes the
language changes present in the new version 3.00.
These have been integrated in
all following versions of Objective CAML (3.xx).