Introduction
The reason to prefer one programming language over
another lies in the ease of developing and maintaining robust
applications. Therefore, we conclude the first part of this book,
which dealt with a general presentation of the Objective CAML language,
by demonstrating its use in a number of applications.
The first application implements a few functions which are used to
write database queries. We emphasize the use of list manipulations and
the functional programming style. The user has access to a set of
functions with which it is easy to write and run queries using
the Objective CAML language directly. This application shows the programmer
how he can easily provide the user with most of the query tools that
the user should need.
The second application is an interpreter for a tiny
BASIC1. This kind of imperative language fueled the
success of the first microcomputers. Twenty years later, they seem
to be very easy to design. Although BASIC is an imperative language,
the implementation of the interpreter uses the functional features of
Objective CAML, especially for the evaluation of
commands. Nevertheless, the lexer and parser for the language use a
mutable structure.
The third application is a one-player game, Minesweeper, which is fairly
well-known since it is bundled with the standard installation of
Windows systems. The goal of the game is to uncover a bunch of hidden
mines by repeatedly uncovering a square, which then indicates the
number of mines around itself. The implementation uses the
imperative features of the language, since the data structure used is
a two-dimensional array which is modified after each turn of the game.
This application uses the Graphics module to draw the game
board and to interact with the player. However, the automatic
uncovering of some squares will be written in a more functional
style.
This latter application uses functions from the Graphics
module described in chapter 5 (see page ??)
as well as some functions from the Random and Sys
modules (see chapter 8, pages
?? and ??).