Books about Caml

In English:

In French:

In German:

In Italian:


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) (web page of the book)

Couverture

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.


Seize problèmes d'informatique

Bruno Petazzoni

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

Couverture

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.


Nouveaux exercices d'algorithmique

Michel Quercia

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

Couverture

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

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.


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.

Couverture

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.


LE LANGAGE CAML

Pierre Weis et Xavier Leroy

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

Couverture

MANUEL DE REFERENCE DU LANGAGE CAML

Xavier Leroy et Pierre Weis

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

Couverture

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.


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, ISBN 2 7296 0419 7

Couverture

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.


APPROCHE FONCTIONNELLE DE LA PROGRAMMATION

Guy Cousineau et Michel Mauny

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

Couverture

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.


Option informatique

Denis Monasse

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

Couverture

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.


Programmation en Caml -- Cours et atelier

Jacques Rouablé

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

Couverture

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 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>


Option informatique, Cours de Maths Spé MP & MP*

Denis Monasse

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

Couverture

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.


Cours et exercices d'informatique, Classes préparatoires, 1er et 2nd cycles universitaires

Ouvrage collectif -- Coordination Luc Albert

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

Couverture

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).


Algorithmen -- Datenstrukturen -- Funktionale Programmierung -- Eine praktische Einführung mit Caml-Light

Juergen Wolff v. Gudenberg

Addison-Wesley, Bonn 1996

Couverture

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.

More about this book.


Introduzione alla programmazione funzionale

Carla Limongelli e Marta Cialdea

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

Couverture