Ullman's book is really accessible and what introduced me to SML as well, but for those looking for something that goes a little deeper, do read "ML for the Working Programmer" by Lawrence Paulson (author of Isabelle). It has one of the best introductions to ML's module system and even covers building a (toy) tactical theorem prover. Oh, and it's now available online for free as well [1]. Another great book on FP is "The Functional Approach to Programming" [2], which is a bit like SICP but using Caml (OCaml without the O) instead of Scheme. [1] https://www.cl.cam.ac.uk/~lp15/MLbook/pub-details.html [2] http://pauillac.inria.fr/cousineau-mauny/main.html
Also recommended in this reply