Also we wrote a whole lot of the "behind the scenes" code for libguestfs in OCaml as well. You won't "see it" necessarily because what it does is to generate hundreds of thousands of lines of boilerplate C code.
Quite good and filled with the kind of exercises that help the language really sink in. Also the OS X installation process for SML/NJ has recently become quite simple.
One big difference between OCaml and SML is that ocamlopt makes it dead simple to create executables for a wide variety of platforms, and that is not so easy w/ SML/NJ.