It is a pleasure to read the Caml Tutorial. Besides bringing ML’s type-inference into focus, it also introduces pattern matching in functional programming. This is an eye-opener for a Java programmer.
This is different from pattern matching via Regular Expressions in most programming languages. More in the tradition of Prolog patterns, where matching is done via unification, this is another prominent feature of modern functional languages.
Part 3 of the Tutorial is building a toy language ASL entirely in Caml Light. This is where ML shines. Using a language to build a toy language of itself is always a good example of how self-contained the language is.