A programming course should concentrate on a program's logical structure and design rather than on simply writing code. The functional approach to programming achieves this aim because logical concepts are evident and programs are transparent, and so can be written quickly and cleanly. In this book, the authors emphasize the notions of function and 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. An appendix gives all the code used in the book in Standard ML.
This is a great book on Caml (actually caml light, not OCaml). Given the fact that there are very few English books on OCaml, this is perhaps the best among all OCaml books.
This book is written in the same spirit of SICP. It starts from scratch and build up to the meta-circular evaluator. There are things missing intentionally, such as Object Oriented programming. It also have a great exposition of compiling, type synthesis and code generation of Caml light.
I think the English translation was not done properly in the last few chapters.