There is a text book _Discrete Mathematics and Functional Programming_ (VanDrunen) [1] which can be bought off Amazon for $60 new. (I bought a used copy when they were cheap, for &lt;$30.) Its a great place to start.<p>There is an older version of the manuscript available if you scour Google.<p>Then there are also the videos that accompany the text book, which can be accessed by anyone. [2]<p>Because learning a language like ML is for the express purpose of thinking differently its likely beneficial to learn the language in a domain you might be unfamiliar with - possibly somewhat academically, instead of building an application from scratch. (&quot;Oh I know how to solve this problem... I&#x27;ll write an if-then-else statement with a bunch of branches!&quot; vs. &quot;Pattern matching in a case statement? List deconstruction and matching? This looks interesting.&quot;)<p>1. <a href="http:&#x2F;&#x2F;www.amazon.com&#x2F;Discrete-Mathematics-Functional-Programming-VanDrunen&#x2F;dp&#x2F;1590282604&#x2F;ref=sr_1_1?ie=UTF8&amp;qid=1450932337&amp;sr=8-1&amp;keywords=vandrunen+discrete+math" rel="nofollow">http:&#x2F;&#x2F;www.amazon.com&#x2F;Discrete-Mathematics-Functional-Progra...</a>
2. <a href="http:&#x2F;&#x2F;cs.wheaton.edu&#x2F;~tvandrun&#x2F;dmfp&#x2F;" rel="nofollow">http:&#x2F;&#x2F;cs.wheaton.edu&#x2F;~tvandrun&#x2F;dmfp&#x2F;</a>