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.