Nouveau livre avec Caml

Pierre Weis (weis@pauillac.inria.fr)
Thu, 11 May 1995 21:03:53 +0200 (MET DST)

From: Pierre Weis <weis@pauillac.inria.fr>
Message-Id: <199505111903.VAA12679@pauillac.inria.fr>
Subject: Nouveau livre avec Caml
To: caml-list@pauillac.inria.fr
Date: Thu, 11 May 1995 21:03:53 +0200 (MET DST)

********** Annonce de livre *************
********** Book Announcement *************
(english presentation at the bottom of the message)

APPROCHE FONCTIONNELLE DE LA PROGRAMMATION

Guy Cousineau et Michel Mauny
Ediscience (Collection Informatique)
ISBN 2-84074-114-8
(440 pages)

Ce livre est principalement issu du cours de programmation donne' par
le premier auteur a` l'e'cole normale supe'rieure depuis 1991.

Il utilise le langage CAML un peu a` la facon dont le livre d'Abelson
et Sussman utilise SCHEME, c'est-a`-dire comme support d'un cours
introductif aux concepts de la programmation.

Le livre est divise' en trois parties. La premie`re est une
introduction progressive a` CAML et a` l'esprit de la programmation
fonctionnelle. On introduit le noyau de CAML c'est-a`-dire la
structure fonctionnelle et les types de donne'es puis on pose les
principes de l'e'valuation par re'e'criture et on introduit la notion
de strate'gie avant d'aborder les preuves de programmes.
Enfin, une fois pose's les principes de la programmation
fonctionnelle, on de'crit aussi les aspects non-fonctionnels de CAML.

La seconde partie du livre est consacre'e a` la description
d'applications relevant de diffe'rents domaines et susceptibles
d'inte'resser diffe'rents types de lecteurs ou d'e'tudiants. Les
domaines aborde's sont l'arithme'tique exacte (entiers,rationnels),
les algorithmes sur les termes (filtrage, unification et
applications), les arbres e'quilibre's pour la repre'sentation
d'ensembles et de dictionnaires, les algorithmes d'exploration de
graphes avec application a` des jeux a` un joueur (a^ne rouge,
solitaire), l'analyse lexicale et l'analyse syntaxique, le dessin
d'arbres et la re'alisation de pavages du plan.

Enfin, la troisie`me partie du livre est consacre' a` l'implantation.
On de'crit l'e'valuation puis la compilation en abordant succintement
les proble`mes de gestion de la me'moire, et enfin la synthe`se de
types. Il ne s'agit pas de'crire de facon exhaustive des implantations
existantes a` destination de futurs "pros" des langages fonctionnels
mais pluto^t de satisfaire la curiosite' des lecteurs qui apre`s avoir
appris a` aimer CAML se demandent assez naturellement "comment ca peut
marcher". La description du synthe'tiseur de types est cependant
tre`s proche de celui de CAML.

PLAN

A. Principes de base
1. Expressions
2. Structures de donne'es
3. Se'mantique
4. Aspects impe'ratifs
B. Applications
5. Arithme'tique exacte
6. Termes formels, filtrage, unification
7. Arbres e'quilibre's
8. Graphes et re'solution de proble`mes
9. Analyse syntaxique
10. Ge'ome'trie et dessins
C. Implantation
11. Evaluation
12. Compilation
13. Typage

********** english description **************

This book is available only in french for the moment
but should be translated to english later on.

Is uses CAML somehow in the same spirit as Abelson and Sussman
use SCHEME in their book "Structure and interpretation
of computer programs" i.e. as a tool to introduce the main
programming concepts.

The book is divided in three parts. Th first part is an

introduction to CAML and to the spirit of functional programming
a la ML. It introduces the kernel of CAML (functional structure
and data types) and then describes evaluation by rewriting,
evaluation strategies and program proofs by induction.
Finally, once the principles of functional programming have
been stated, it describes the imperative features of CAML.

The second part is dedicated to the description of application

programs which belong to various fields and might interest
various types of readers or students. These fields are exact
arithmetic (integer, rational), algorithms on terms (pattern-
matching, unification and applications), balanced trees for the
implementations of sets and maps, graph traversals with application
to problem solving, lexical and syntaxic analysis, tree drawing
and tesselations of the plane.

Finally, the third part is dedicated to implementation. It describes
interpretation then compilation, with a brief description of
memory management, and finally type synthesis. It does not describe
an existing implementation in full details but rather emphasizes
clarity and simplicity of description. The description of
type synthesis however is quite close to a real implementation.

SUMMARY

A. Basic principes
1. Expressions
2. Data structures
3. Semantics
4. Imperative aspects
B. Applications
5. Exact arithmetic
6. Fprmal terms, pattern-matching, unification
7. Balanced trees
8. Graphs and problem solving
9. Syntax analysis
10. Geometry and drawings
C. Implementation
11. Evaluation
12. Compilation
13. Type synthesis