**Developing Applications With Objective Caml**, Emmanuel Chailloux, Pascal Manoury and Bruno Pagano, preliminary translation of the book*Développement d'applications avec Objective Caml*.**Objective CAML for Scientists**, Jon D. Harrop, 2005.**The Functional Approach to Programming**, Guy Cousineau and Michel Mauny,*Cambridge University Press, Cambridge, 1998, ISBN 0-521-57183-9 (hardcover), 0-521-57681-4 (paperback)*

**Seize problèmes d'informatique**with detailed solutions and Caml programs, Bruno Petazzoni,*Éditions Springer, Paris, 2001, ISBN 3-540-67387-3.***Nouveaux exercices d'algorithmique**with theoretical summarizes and solutions with Caml programs, Michel Quercia,*Éditions Vuibert, Paris, mai 2000, ISBN 2-7117-8990 X.***Développement d'applications avec Objective Caml**, Emmanuel Chailloux, Pascal Manoury, et Bruno Pagano,*Éditions O'Reilly, Paris, avril 2000, ISBN 2-84177-121-0.***Le langage Caml**, Pierre Weis et Xavier Leroy,*Second edition, Dunod, Paris, 1999, ISBN 2-10-004383-8***Manuel de Référence du langage Caml**, Xavier Leroy et Pierre Weis,*InterEditions, Paris 1993, ISBN 2-7296-0492-8***Concepts et outils de programmation -- le style fonctionnel, le style impératif avec CAML et Ada**, Thérèse Accart Hardin et Véronique Donzeau-Gouge Viguié,*InterEditions, Paris 1991, ISBN 2-7296-0419-7***Approche fonctionnelle de la programmation**, Guy Cousineau et Michel Mauny,*Ediscience (Collection Informatique), Paris 1995, ISBN 2-84074-114-8***Option informatique**, Denis Monasse,*Vuibert (Enseignement supérieur & Informatique), Paris 1996, ISBN 2-7117-8831-8***Programmation en Caml -- Cours et atelier**, Jacques Rouablé,*Eyrolles, Paris 1997, ISBN 2-212-08944-9***Option informatique, Cours de Maths Spé MP & MP**, Denis Monasse,^{*}*Vuibert (Enseignement supérieur & Informatique), Paris 1997, ISBN 2-7117-8839-3***Cours et exercices d'informatique, Classes préparatoires, 1**, Ouvrage collectif -- Coordination Luc Albert,^{er}et 2^{nd}cycles universitaires*Thomson Publishing Internationl, Paris 1997, ISBN 2-84180-106-3*

**Algorithmen -- Datenstrukturen -- Funktionale Programmierung -- Eine praktische Einführung mit Caml-Light**, Juergen Wolff v. Gudenberg,*Addison-Wesley, Bonn 1996*

**Introduzione alla programmazione funzionale**, Carla Limongelli e Marta Cialdea, Progetto Leonardo,*Societa' Editrice Esculapio (*`www.editrice-esculapio.it`

) 2002, ISBN 88-7488-031-6

*Jon D. Harrop*

Available from
Flying Frog Consultancy Ltd..

This book teaches the fundamentals of programming using OCaml, assuming little prior knowledge of computer programming. Particular emphasis is placed upon programming paradigms rarely seen in current scientific computing, such as exceptions, polymorphism, higher-order functions, nested functions, pattern matching and modules.

*Guy Cousineau and Michel Mauny*

Cambridge University Press, Cambridge, 1998, ISBN 0-521-57183-9
(hardcover), 0-521-57681-4 (paperback) (web
page of the book)

A programming course should concentrate as much as possible on a program's logical structure and design rather than simply show how to write code. The Functional Approach to Programming achieves this aim because logical concepts are evident and programs are transparent so can be written quickly and cleanly. In this book the authors emphasise the notions of function and function application which relate programming to familiar concepts from mathematics and logic. They introduce functional programming via examples but also explain what programs compute and how to reason about them. They show how the ideas can be implemented in the Caml language, a dialect of the ML family, and give examples of how complex programs from a variety of areas (such as arithmetic, tree algorithms, graph algorithms, text parsing and geometry) can be developed in close agreement with their specifications. Many exercises and examples are included throughout the book; solutions are also available.

Available from Amazon.

*Bruno Petazzoni*

Éditions Springer, Paris, 2001, ISBN 3-540-67387-3.

A set of sixteen problems in computer science, with detailed answers to all questions and complete solutions to algorithmic problems given as Caml programs.

Written for students attending to the computer science optional cursus of the MPSI/MP classes (classes préparatoires aux grandes écoles d'ingénieurs), this book mainly covers problems on automata, words (finite or infinite), formal languages theory, and some classical algorithms such as bin packing.

A good book for teachers and students in computer science (upto master degree).

Available from Springer.

*Michel Quercia*

Éditions Vuibert, Paris, mai 2000, ISBN 2-7117-8990 X.

Learning computer science requires some strong theoretical basis but computer science cannot be masterized without practical exploration.

Those 103 exercices and 5 problems about algorithmic fullfill this mandatory requirement.

Programs are written in Caml and fully functionnal. Each subject is covered by a detailed answer along with the necessary theoretical preliminaries.

Summary

*Exercices*: programming methodology - list data structure - sorted lists - evaluation of a formula - boolean logic - complexity of algorithms - trees - binary search trees - languages and automata*Problems*: sorting by distribution - Lagrange's interpolation and fast multiplication - longest common sub-sequence - balanced priority trees - compilation of an expression

Michel Quercia also wrote a complete computer science course unsing
Caml as language support. This course is freely available from
`http://pauillac.inria.fr/~quercia/`

.

Book available from Vuibert.

*Emmanuel Chailloux, Pascal Manoury, et Bruno Pagano*

Éditions O'Reilly, Paris, avril 2000, ISBN 2-84177-121-0.

A comprehensive (742 pages) book on Objective Caml, covering not only the core language, but also modules, objects and classes, threads and systems programming, and interoperability with C.

A preliminary English translation of this book is available on-line. The French text is also on-line.

*Pierre Weis et Xavier Leroy*

Second edition, Dunod, Paris, 1999, ISBN 2-10-004383-8. First edition, InterEditions, Paris 1993.

*Xavier Leroy et Pierre Weis*

InterEditions, Paris 1993, ISBN 2-7296-0492-8

Two books about Caml written in french, and respectively entitled ``Le Langage Caml'' (The Caml programming language) and ``Manuel de Reference du langage Caml'' (The Caml programming language reference manual). The first one is in fact a programming course based on Caml and contains many examples of Caml programs, some of which are really non-trivial. The second book is an up-to-date french version of the Caml documentation, with new examples and new explanations when necessary.

Order online: Le langage Caml, Manuel de référence du langage Caml.

*Thérèse Accart Hardin et Véronique Donzeau-Gouge Viguié *

InterEditions, ISBN 2 7296 0419 7

This book presents a new approach for teaching programming concepts to beginners, based on language semantics. A simplified semantic model is used to describe precisely the features found in the most advanced functional or imperative programming languages. This model is powerful enough to take into account typechecking, polymorphism, evaluation, side-effects, modularity, genericity, exceptions. However, this model is simple enough to be manipulated by hand, so that students may really compute with it. This book starts with a functional approach (with CAML), followed by the presentation of the imperative languages (with Ada). Thanks to the semantic model, the concepts of the imperative and functional worlds and their relationships may be explained simply but correctly and completely. Also, this book provides numerous exercises with solutions.

*Guy Cousineau et Michel Mauny*

Ediscience (Collection Informatique), Paris 1995, ISBN 2-84074-114-8 (web page of the book)

This book is also available in english (see here).

It 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. The 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 syntactic 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. However, the description of type synthesis is quite close to a real implementation.

*Denis Monasse*

Vuibert (Enseignement supérieur & Informatique), Paris 1996, ISBN 2-7117-8831-8

This is a computer science course for the first year of ``Classes préparatoires aux grandes Écoles'', the french excellence way to become an engineer. The course starts by an introductory lesson on algorithms and a description of the Caml language. Then fundamental of algorithms are described and illustrated via programs in Caml.

The book aims at mathematical reasonning, and mathematical descriptions of objects are related to the data structures of the programming language.

This book is intended for students with some mathematical
background, and every one who wants to learn the bases of computer
science.

Mathematics and computer science teachers will also read this book with
profit.

*Jacques Rouablé*

Eyrolles, Paris 1997, ISBN 2-212-08944-9

This books is adressed to beginners that will find here the basic notions of programming. The teacher will dig here the basic material to write training exercises for students.

The book has two parts :

- The programming course : it is a programming manual that initiates the reader to the Caml language. Important notions are presented on the practical point of view. In addition, the implementation of some of these notions is analysed and sketched.
- The Caml workshop : this parts is a practical application of the notions
of the first part of the book, to other domains that are connected to
computer science, logic, automata and grammars.
Three complete programs are given : a translator, an electronic spreadsheet, and a text editor.

The book is equipped with a companion CD-Rom, containing the Caml sources of the examples given, a complete distribution of Caml-Light 0.71, an HTML version of the first part of the book (the programming course), and a commercial Web Browser to read the CD-Rom.

*To contact the author :
<Jacques.Rouable@wanadoo.fr>
*

*Denis Monasse*

Vuibert (Enseignement supérieur & Informatique), Paris 1997, ISBN 2-7117-8839-3

This is a computer science course for the second year of ``Classes préparatoires aux grandes Écoles'', the french excellence way to become an engineer.

The book contains 4 parts: Trees - Algebraic expressions - Automata and languages - Caml programming: streams.

The books has a table of contents of more than 120 entries and there are more than 200 Caml programs, the language chosen for its expressive power, its elegance and readability, and also for its simplicity and its fit to the themes studied.

As for the first year course, the book aims at mathematical rigor and reasonning: mathematical descriptions of objects are related to data structures, algorithms are validated and implemented as Caml programs.

This book is intended for students with some mathematical
background, and every one who wants to learn the bases of computer
science.

Mathematics and computer science teachers will also read this book with
profit.

*Ouvrage collectif -- Coordination Luc Albert*

Thomson Publishing Internationl, Paris 1997, ISBN 2-84180-106-3

This book has been written by teachers from university and ``classes préparatoires aux grandes écoles''. It is intended to students from CPGE learning computer science, and students engaged in a computer science cursus at the master level. Any person that desires to get a basic knowledge in theoretical computer science will read it with profit.

This book includes a tutorial for the Caml language, and a course on algorithmic, data structures, automats theory, and formal logic.

It offers 135 exercices (with solutions) and encompasses the full cursus for students that engaged the computer science option in ``MPSI'' and ``MP'' classes; the official cursus program is given in an appendix. Teachers will find in this book a basis to build lectures, exercices, and application projets.

**About the authors**

Luc Albert, Bruno Petazzoni and Nicolas Puech are teachers at ``classes préparatoire'' at Fénelon, Marcelin Berthelot and Newton high schools. Antoine Petit teaches at l'ENS Cachan, Pascal Weil is researcher at CNRS, and Paul Gastin teaches at Paris VII university.

Authors' royalties are sent to various non-profit organisations: AICF (struggle against starving), l'OPC (that helps blind people), and ROC (environmental preservation).

*Juergen Wolff v. Gudenberg*

Addison-Wesley, Bonn 1996

The design of algorithms, their implementation and the handling of data structures belong to the basic tools of each computer scientist.

This book gives an introduction where algorithms as well as data structures are considered functionally. It is intended as an accompanying book for basic courses in computer science, but it is also suitable for self-studies.

In the first part the algorithms are concisely and precisely designed
using Caml Light as a kind of pseudo code. The main ideas are thus not
concealed by a lot of details.

As an additional advantage the pseudo code describes complete programs
and the designs are directly executable.

In this manner the reader becomes familar with functional programming.

The second part provides a tutorial introduction into the language Caml Light and in its last chapter a comprehensive description of the language kernel.

Caml Light is an easily portable, typed, functional language which is interpreted but may also be compiled if neccessary. There is a considerable amount of interesting application modules.

The sample programs for all algorithms mentioned in the book are freely available as well as the system itself.

*Carla Limongelli e Marta Cialdea*

Societa' Editrice Esculapio, 2002, ISBN 88-7488-031-6.