Practical Ocaml by Joshua B. Smith