For the interested reader, we list below some references to books and reports related (sometimes loosely) to Caml Light.
The books below are programming courses taught in ML. Their main goal is to teach programming, not to describe ML in full details --- though most contain fairly good introductions to the ML language. Some of those books use the Standard ML dialect instead of the Caml dialect, so you will have to keep in mind the differences in syntax and in semantics.
The natural companion to this manual, provided you read French. This book is a step-by-step introduction to programming in Caml, and presents many realistic examples of Caml programs.
Another Caml programming course written in French, with many original examples.
A good introduction to programming in Standard ML. Develops a theorem prover as a complete example. Contains a presentation of the module system of Standard ML.
Another good introduction to programming in Standard ML. No realistic examples, but a very detailed presentation of the language constructs.
A short, but nice introduction to programming in Standard ML.
A first course in programming, that first introduces the main programming notions in Caml, then shows them underlying Ada. Intended for beginners; slow-paced for the others.
A presentation of Standard ML from the standpoint of abstract data types. Uses intensively the Standard ML module system.
An outstanding course on programming, taught in Scheme, the modern dialect of Lisp. Well worth reading, even if you are more interested in ML than in Lisp.
The books and reports below are descriptions of various programming languages from the ML family. They assume some familiarity with ML.
The French edition of the present reference manual and user's manual.
An overview of Standard ML, including the module system. Terse, but still readable.
A complete formal definition of Standard ML, in the framework of structured operational semantics. This book is probably the most mathematically precise definition of a programming language ever written. It is heavy on formalism and extremely terse, so even readers who are thoroughly familiar with ML will have major difficulties with it.
A commentary on the book above, that attempts to explain the most delicate parts and motivate the design choices. Easier to read than the Definition, but still rather involving.
A short description of the original Caml system, from which Caml Light has evolved. Some familiarity with Lisp is assumed.
The manual for the original Caml system, from which Caml Light has evolved.
This is the first published description of the ML language, at the time when it was nothing more than the control language for the LCF system, a theorem prover. This book is now obsolete, since the ML language has much evolved since then; but it is still of historical interest.
Haskell is a purely functional language with lazy semantics that shares many important points with ML (full functionality, polymorphic typing), but has interesting features of its own (dynamic overloading, also called type classes).
The references below are intended for those who are curious to learn how a language like Caml Light is compiled and implemented.
A description of the ZINC implementation, the prototype ML implementation that has evolved into Caml Light. Large parts of this report still apply to the current Caml Light system, in particular the description of the execution model and abstract machine. Other parts are now obsolete. Yet this report still gives a complete overview of the implementation techniques used in Caml Light.
An excellent description of the implementation of purely functional languages with lazy semantics, using the technique known as graph reduction. The part of the book that deals with the transformation from ML to enriched lambda-calculus directly applies to Caml Light. You will find a good description of how pattern-matching is compiled and how types are inferred. The remainder of the book does not apply directly to Caml Light, since Caml Light is not purely functional (it has side-effects), has strict semantics, and does not use graph reduction at all.
A complete description of an optimizing compiler for Standard ML, based on an intermediate representation called continuation-passing style. Shows how many advanced program optimizations can be applied to ML. Not directly relevant to the Caml Light system, since Caml Light does not use continuation-passing style at all, and makes little attempts at optimizing programs.
The following reports show ML at work in various, sometimes unexpected, areas.