<p>I like to study languages outside my comfort zone, but I've had a hard time finding a place to start for functional languages.  I heard a lot of good things about <a href="https://rads.stackoverflow.com/amzn/click/com/0070004846" rel="noreferrer" rel="nofollow noreferrer">Structure and Interpretations of Computer Programs</a>, but when I tried to read through it a couple of years ago it just seemed to whiz over my head.  I do way better with books than web sites, but when I visit the local book store the books on LISP look kind of scary.</p>

<p>So what's a good starting point?  My goal is to be able to use a functional programming language to solve simple problems in 6 months or so, and the ability to move to more advanced topics, recognize when a functional language is the right tool for the job, and use the language to solve more problems over the course of 2-3 years.  I like books that are heavy on examples but also include challenges to work through.  Does such a thing exist for functional languages?</p>

[{'answer_id': 23179, 'author': 'mk.', 'author_id': 1797, 'author_profile': 'https://Stackoverflow.com/users/1797', 'pm_score': 6, 'selected': True, 'text': '<p><a href="http://www.ccs.neu.edu/home/matthias/BTLS/" rel="noreferrer">The Little Schemer</a> teaches recursion really well, and it\'s fun and simple to read. </p>\n\n<p>I also liked <a href="http://www.scheme.com/tspl3/" rel="noreferrer">The Scheme Programming Language</a> for a broader introduction into the language. </p>\n'}, {'answer_id': 23184, 'author': 'Joe Shaw', 'author_id': 156, 'author_profile': 'https://Stackoverflow.com/users/156', 'pm_score': 2, 'selected': False, 'text': '<p>I found <a href="https://rads.stackoverflow.com/amzn/click/com/0262560992" rel="nofollow noreferrer" rel="nofollow noreferrer">The Little Schemer</a> a great, great introduction to functional programming.  It\'s entirely based on simple, bite sized examples which are built up upon as the book goes on.</p>\n'}, {'answer_id': 23185, 'author': 'Pascal', 'author_id': 1311, 'author_profile': 'https://Stackoverflow.com/users/1311', 'pm_score': 2, 'selected': False, 'text': '<p>Haskell is a very good functional programming language for beginners. Someone had asked about good resources for Haskell, so I will point you <a href="https://stackoverflow.com/questions/16918/beginners-guide-to-haskell#16951">there</a>.</p>\n\n<p>If you are looking for a good book on Functional Programming, I would recommend "Functional Programming: Practice and Theory" by  Bruce J. Maclennan. <br>\nIt is however required that you brush up on your Set Theory and Logic before giving it a read. It includes examples in LISP, Haskell and other languages.</p>\n'}, {'answer_id': 23188, 'author': 'Brian Leahy', 'author_id': 580, 'author_profile': 'https://Stackoverflow.com/users/580', 'pm_score': 1, 'selected': False, 'text': '<p>If you have experience with .NET, <a href="http://www.apress.com/book/view/9781590598504" rel="nofollow noreferrer">Expert #F</a> is good.</p>\n\n<p>F# is derived from OCaml.  Lisp is more pure as functional languages go.</p>\n'}, {'answer_id': 23193, 'author': 'nlucaroni', 'author_id': 157, 'author_profile': 'https://Stackoverflow.com/users/157', 'pm_score': 4, 'selected': False, 'text': '<p>SICP is a great book. </p>\n\n<p>This is probably my bias, but I thought ocaml was pretty easy to get into. You have the option of programming in a few different styles until you\'re completely comfortable. I <a href="https://stackoverflow.com/questions/22873/language-referencestutorials-for-popular-languages#22940">posted a bunch of links</a> to Haskell and Ocaml references that <em>are</em> books, with examples et cetera that seem right up your alley.</p>\n\n<p>If you prefer Lisp, you can try to power through the <a href="http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html" rel="nofollow noreferrer">99-problems in Lisp</a>(which you can do in any language, really), or you can watch the <a href="http://video.google.com/videoplay?docid=5546836985338782440" rel="nofollow noreferrer">lectures</a> from the people who wrote SICP.</p>\n\n<p>Further down the road, get a hold of "<a href="http://books.google.com/books?id=SxPzSTcTalAC&amp;dq=purely+functional+data+structures" rel="nofollow noreferrer">Purely Functional Data Structures</a>", as it\'ll get into the hard-core deep design and considerations you have to take into account in functional languages --it uses ML (which ocaml derived from).</p>\n'}, {'answer_id': 23198, 'author': 'Craig H', 'author_id': 2328, 'author_profile': 'https://Stackoverflow.com/users/2328', 'pm_score': 0, 'selected': False, 'text': '<p>I have heard good things about <a href="https://rads.stackoverflow.com/amzn/click/com/0201342758" rel="nofollow noreferrer" rel="nofollow noreferrer">Haskell Functional Programming</a>, but I also found this <a href="http://www.amazon.com/LISP-Functional-Programming-Books/lm/36GEU8N3B2JPW" rel="nofollow noreferrer">list</a> of functional programming books at amazon that might be helpful to you.</p>\n'}, {'answer_id': 23203, 'author': 'Konrad Rudolph', 'author_id': 1968, 'author_profile': 'https://Stackoverflow.com/users/1968', 'pm_score': 3, 'selected': False, 'text': '<p>I really like Thompson’s “Haskell: The Craft of Functional Programming” because it’s well written and Haskell allows an easier start than other functional languages while being completely pure (unlike Lisp or Scheme).</p>\n'}, {'answer_id': 23269, 'author': 'Community', 'author_id': -1, 'author_profile': 'https://Stackoverflow.com/users/-1', 'pm_score': 3, 'selected': False, 'text': '<p>Since there are a bunch of different functional programming languages, it\'s hard to recommend books. But if you\'re interested in Common Lisp, recently I\'ve been reading <a href="https://rads.stackoverflow.com/amzn/click/com/1590592395" rel="noreferrer" rel="nofollow noreferrer">"Practical Common Lisp"</a> by Peter Seibel, which you can <a href="http://gigamonkeys.com/book/" rel="noreferrer">check out online for free</a> before dropping your hard earned cash on it. It\'s a pretty gentle introduction to CL, with great explanations and tons of examples. Seibel\'s a great writer (example: read <a href="http://gigamonkeys.com/book/macros-defining-your-own.html" rel="noreferrer">the story of Mac</a>,) he\'s good at keeping you engaged, which is really where SICP falls down, I think. It\'s just so dry! But while Practical Common Lisp is pretty example-heavy, it doesn\'t really have challenges to work through, although the examples are mostly designed to let you continue to work and build on them.</p>\n\n<p>Another good book, this one Scheme-oriented: <a href="https://rads.stackoverflow.com/amzn/click/com/0262062186" rel="noreferrer" rel="nofollow noreferrer">How to Design Programs</a>. (<a href="http://www.htdp.org/2003-09-26/" rel="noreferrer">Online</a>)\nI haven\'t had as much time with this book, being more of a Lisper than a Schemer myself, but it\'s well written, has good explanations and examples, and has lots of exercises to work on. It seems pretty popular in the Scheme crowd.</p>\n'}, {'answer_id': 23273, 'author': 'Chris Conway', 'author_id': 1412, 'author_profile': 'https://Stackoverflow.com/users/1412', 'pm_score': 2, 'selected': False, 'text': "<p>I learned from Jeffrey Ullman's <em>Elements of ML Programming</em>, which is pretty good. It loses points for being about Standard ML, when OCaml, F#, and Haskell are (seemingly) more popular.</p>\n"}, {'answer_id': 23828, 'author': 'jfs', 'author_id': 718, 'author_profile': 'https://Stackoverflow.com/users/718', 'pm_score': 4, 'selected': False, 'text': '<p>Try <a href="http://book.realworldhaskell.org/beta/index.html" rel="noreferrer">Real World Haskell</a>. It\'s free online.</p>\n'}, {'answer_id': 62464, 'author': 'Community', 'author_id': -1, 'author_profile': 'https://Stackoverflow.com/users/-1', 'pm_score': 3, 'selected': False, 'text': '<p>The Schemers Guide and related software - seriously good stuff</p>\n\n<p><a href="http://www.schemers.com/tsg.html" rel="noreferrer">http://www.schemers.com/tsg.html</a></p>\n'}, {'answer_id': 196160, 'author': 'Stephen', 'author_id': 17398, 'author_profile': 'https://Stackoverflow.com/users/17398', 'pm_score': 2, 'selected': False, 'text': '<p>I feel <em>Purely Functional Data Structures</em> by Chris Okasaki is worth a look.</p>\n\n<p>FYI <a href="http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf" rel="nofollow noreferrer">http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf</a></p>\n'}, {'answer_id': 344119, 'author': 'thecivil', 'author_id': 43661, 'author_profile': 'https://Stackoverflow.com/users/43661', 'pm_score': 4, 'selected': False, 'text': '<p>I really recommend "On Lisp" from Paul Graham. </p>\n\n<p>It is concise and very readable even for beginners in functional programming (as I was when I read it). It contains a lot of very short examples, each which helps to understand one single thing. </p>\n\n<p>I often thought reading this book: this is just the language containing exactly the features I ever wanted in other (nonfunctional) languages, but never got. :-(\nAnd this is exactly the book to learn it, always comprehensible, sometimes even funny!</p>\n\n<p>You may get it for free at <a href="http://www.paulgraham.com/onlisp.html" rel="noreferrer">the author\'s site</a>!</p>\n'}, {'answer_id': 552452, 'author': 'amit', 'author_id': 62237, 'author_profile': 'https://Stackoverflow.com/users/62237', 'pm_score': 3, 'selected': False, 'text': '<p>Check out <a href="https://rads.stackoverflow.com/amzn/click/com/0134843460" rel="noreferrer" rel="nofollow noreferrer">Introduction to functional programming</a>. It offers a different perspective.</p>\n'}, {'answer_id': 3601898, 'author': 'Mauricio Scheffer', 'author_id': 21239, 'author_profile': 'https://Stackoverflow.com/users/21239', 'pm_score': 1, 'selected': False, 'text': '<p><a href="http://www.manning.com/petricek/" rel="nofollow noreferrer">Real-World Functional Programming</a> (with examples in F# and C#)</p>\n'}]
['https://Stackoverflow.com/questions/23166', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/2547/']