Not that many options I think.<p>A classic is Larry C Paulson&#x27;s &quot;ML for the Working Programmer&quot;, although it&#x27;s (a) apparently a bit divisive (see e.g. <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9667264" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9667264</a>) and (b) out of print. It&#x27;s a thoughtful treatment of functional programming that happens to use ML, and a book I enjoy reading rather than just referring to. I appreciate the fact that the second edition introduces modules very early on, and that it&#x27;s relatively un-mathematical in the way it presents things like module semantics.<p>Robert Harper&#x27;s &quot;Programming in Standard ML&quot; (online only I think, at <a href="http:&#x2F;&#x2F;www.cs.cmu.edu&#x2F;~rwh&#x2F;smlbook&#x2F;book.pdf" rel="nofollow">http:&#x2F;&#x2F;www.cs.cmu.edu&#x2F;~rwh&#x2F;smlbook&#x2F;book.pdf</a>) is more thorough. It&#x27;s modern enough to present the Basis library as part of the language, so you do get a handful of useful existing data structures rather than feeling you&#x27;re expected to build everything yourself. A pity the Basis library is so slight though.