A lot of the stuff there is to know about functional programming is still only contained in academic papers, and indeed many of these listed books are texts in programming languages that cite a great deal of the important literature. There is much about programming languages and functional programming that one might read interspersed with these books. Other than following references in the backs of many of these books, the Haskell wiki is a good place for starting to dig into literature on functional programming, as many articles link to important and interesting papers.
On that note it's a bit strange not to see a few books on semantics, such as Transitions and Trees or Semantics Engineering with PLT Redex, listed among books like TAPL and Barendregt's Lambda Calculus. Especially now that DSL design is something many programmers are dabbling in, it makes sense to gain some background on operational semantics. I'd recommend either of these books to anyone working on DSLs, especially in a functional language.
Finally, it might be worth adding Homotopy Type Theory to your list, especially since the list already contains several good books about Coq as well as works about type theory and type systems.
Why Homotopy Type Theory? It is cutting edge research and it doesn't seem clear to me that it is going to have an impact on functional programming (of the non-mathematical research type) any time soon. Am I mistaken?
The classics section is missing one of my favourites, Recursive Programming Techniques by Wm Burge. A beautiful book that was ultra cutting-edge at the time (1975) but still a very effective exploration of the elegance of FP, techniques and patterns that are useful today, ideas with the potential to provide satori moments for anyone learning the paradigm, issues arising from laziness etc etc. You can read it today and treat the language used as a notation, like a dynamically-typed Haskell IIRC. The best £1.54 you'll ever spend! -- http://www.amazon.co.uk/Recursive-Programming-Techniques-sys...
To the author: The section on 'Caml and Objective Caml' should be renamed to 'OCaml' as that's the official name of language in recent years.
Also, the ordering of books is best done in reverse chronological order. Improvements are made in different compiler versions so it would cause frustration for a new reader if they come across a disconnect. I suspect the same is true for other languages listed. The most recent books are 'OCaml from the very beginning' [1] (released earlier this year) and 'Real World OCaml' [2] (released a few weeks ago). You can find these and other OCaml books listed at: http://ocaml.org/learn/books.html
You build a basic old-school text adventure in Prolog which is more accessible than the traditionally boring introductions with family databases (imo). It's from amzi but should work with most Prologs, iirc I ran through it with GNU-Prolog (I'd recommend SWI though, it's the best open source implementation out there imo).
Uses some metaprogramming that is usually not covered in introductory material (and often considered "use with care") i.e. dynamically updating code with assert/retract
I have only browsed "Warren's Abstract Machine: A Tutorial Reconstruction" but it's on my to read list. Interesting for anyone that enjoys VM-design and the like.
The Pearls of Functional Algorithm Design is like the On Lisp of Haskell. It's a stunning, challenging intermediate FP programming book that focuses on how equational reasoning allows you to "automatically" move from unoptimized, unelegant, fragile code to optimal, beautiful code correctly.
I remember a wonderful website about functional programming in python, not about the classic map/fold/list, but about solving numerical problems in a functional manner (somehow monadic in structure, without saying it). I could never find it again, maybe someone knows it.
If anyone wants to read SICP and would like a buddy to read it with, let me know! I am working on an iPad app for people to study together and we are trying SICP as one of our first courses. I am reading it for my first time. It is an enlightening book! [email protected]
Functional programming is the best, a classic approach for a smooth simple development. And this review was simply amazing.
I saw this website a few days back, http://studytonight.com which is really nice, if we talk about simple lessons.
I saw some really great videos there about concept of programming and data structures.
I don't like this article. Lots of people do a Google-search on books on various topics, then publish a blog article without having read them. I'm seeing books in there that are awful choices.
And oh look, the Amazon articles are tagged, which means the author gets affiliate compensations. And what do you know, it's the hollyday season, so people buy stuff on Amazon.
And don't get me wrong, I'm fine with that, I did it myself, but at least read the freaking books that you're recommending, before recommending them.
>"I'm seeing books in there that are awful choices."
At the very least, you could mention which and why.
There's a hell of a lot more value in...
"The ZINC experiment: an economical implementation of the ML language is a technical report, written by Xavier Leroy (author of OCaml) in 1990th, and it contains pretty detailed description of ML-like language implementation. This report could be very interesting for all who wants to know about internals of Caml & OCaml languages."
...x 132 from someone who may or may or may not have actually read what's linked than a simple "awful" without any context or qualification.
I mean, you could have just dropped a link to your own site and added something of value, instead of creating a nonsense tangent of accusation:
This is a list of amazon referral links to books related to functional programming, with a ~2-sentence blurb about each that could be written in 10 minutes with the help of google. It's a nice way for him to make some referral money but otherwise it's nothing special. The guy probably hasn't opened half of the books here.
please, generate it yourself (without looking into this list) and track how much time you need to do this...
I've compiled this list long time ago as an article for Russian FP journal, and it takes relatively much time to track new books, obtain them (paying myself or get through Safari Online), read or at least briefly go through it, and write a short review...
P.S. regarding the referral money - don't think that it generates a ton of money - it's barely enough to buy one inexpensive book per year...
This is excellent review, no doubt, by a well known scholar.) The only problem is that there are so many books and so little time.
So, to get a quick and productive crash-course I would recommend just a few selected resources.
* SICP based course CS 61A by Brian Harvey (Youtube)
* HtDP2 and a wonderful course based on it - Introduction to Systematic Program Design by Gregor Kiczales (the author of The Art Of Metaobject Protocol)
* Armstrong's thesys armstrong_thesis_2003.pdf and his Programming Erlang book.
* Programming Languages course by Dan Grossman (also on Coursera)
Grossman's PL course is not the hardest of them all, but it did provide had the most value, compared to the other Coursera courses I've taken. Truly excellent.
[+] [-] ek|12 years ago|reply
A lot of the stuff there is to know about functional programming is still only contained in academic papers, and indeed many of these listed books are texts in programming languages that cite a great deal of the important literature. There is much about programming languages and functional programming that one might read interspersed with these books. Other than following references in the backs of many of these books, the Haskell wiki is a good place for starting to dig into literature on functional programming, as many articles link to important and interesting papers.
On that note it's a bit strange not to see a few books on semantics, such as Transitions and Trees or Semantics Engineering with PLT Redex, listed among books like TAPL and Barendregt's Lambda Calculus. Especially now that DSL design is something many programmers are dabbling in, it makes sense to gain some background on operational semantics. I'd recommend either of these books to anyone working on DSLs, especially in a functional language.
Finally, it might be worth adding Homotopy Type Theory to your list, especially since the list already contains several good books about Coq as well as works about type theory and type systems.
[+] [-] platz|12 years ago|reply
http://www.haskell.org/haskellwiki/Fold
http://www.haskell.org/haskellwiki/Monad
http://www.haskell.org/haskellwiki/All_About_Monads
http://www.haskell.org/haskellwiki/Learn_Haskell_in_10_minut...
http://www.haskell.org/haskellwiki/Typeclassopedia
Also check out http://adit.io/ for some great tutorials with pictures
[+] [-] mej10|12 years ago|reply
[+] [-] alexott|12 years ago|reply
[+] [-] BellsOnSunday|12 years ago|reply
[+] [-] alexott|12 years ago|reply
[+] [-] amirmc|12 years ago|reply
Also, the ordering of books is best done in reverse chronological order. Improvements are made in different compiler versions so it would cause frustration for a new reader if they come across a disconnect. I suspect the same is true for other languages listed. The most recent books are 'OCaml from the very beginning' [1] (released earlier this year) and 'Real World OCaml' [2] (released a few weeks ago). You can find these and other OCaml books listed at: http://ocaml.org/learn/books.html
[1] http://ocaml-book.com/
[2] https://realworldocaml.org/
[+] [-] alexott|12 years ago|reply
[+] [-] davidw|12 years ago|reply
http://learnyousomeerlang.com/
It can be a bit verbose if you just want a reference, but that's because he spends so much time teaching you the details.
[+] [-] kriro|12 years ago|reply
(1) Prolog Programming for Artificial Intelligence (first half is sufficient to start) -> (2) The Art of Prolog -> (3) The Craft of Prolog
As a first "get to know the language" I'd add:
http://www.amzi.com/AdventureInProlog/a1start.php
You build a basic old-school text adventure in Prolog which is more accessible than the traditionally boring introductions with family databases (imo). It's from amzi but should work with most Prologs, iirc I ran through it with GNU-Prolog (I'd recommend SWI though, it's the best open source implementation out there imo). Uses some metaprogramming that is usually not covered in introductory material (and often considered "use with care") i.e. dynamically updating code with assert/retract
I have only browsed "Warren's Abstract Machine: A Tutorial Reconstruction" but it's on my to read list. Interesting for anyone that enjoys VM-design and the like.
[+] [-] tel|12 years ago|reply
I cannot recommend it enough.
[+] [-] frrp|12 years ago|reply
We are mostly working on Martin Odersky's Coursera courses and SICP book exercises.
[+] [-] eru|12 years ago|reply
We have also revived the FP meetup in Singapore. Drop me a line, if you are interested, dear reader. (Email in profile.)
[+] [-] agumonkey|12 years ago|reply
[+] [-] bridger|12 years ago|reply
[+] [-] iamabhishek|12 years ago|reply
I saw some really great videos there about concept of programming and data structures.
{pretty impressed}
[+] [-] bad_user|12 years ago|reply
And oh look, the Amazon articles are tagged, which means the author gets affiliate compensations. And what do you know, it's the hollyday season, so people buy stuff on Amazon.
And don't get me wrong, I'm fine with that, I did it myself, but at least read the freaking books that you're recommending, before recommending them.
[+] [-] incision|12 years ago|reply
At the very least, you could mention which and why.
There's a hell of a lot more value in...
"The ZINC experiment: an economical implementation of the ML language is a technical report, written by Xavier Leroy (author of OCaml) in 1990th, and it contains pretty detailed description of ML-like language implementation. This report could be very interesting for all who wants to know about internals of Caml & OCaml languages."
...x 132 from someone who may or may or may not have actually read what's linked than a simple "awful" without any context or qualification.
I mean, you could have just dropped a link to your own site and added something of value, instead of creating a nonsense tangent of accusation:
https://www.bionicspirit.com/blog/2013/05/13/getting-started...
[+] [-] alexott|12 years ago|reply
P.S. About affiliation links - it's written clearly in the 2nd paragraph of the page.
[+] [-] OnionChamp|12 years ago|reply
[+] [-] alexott|12 years ago|reply
I've compiled this list long time ago as an article for Russian FP journal, and it takes relatively much time to track new books, obtain them (paying myself or get through Safari Online), read or at least briefly go through it, and write a short review...
P.S. regarding the referral money - don't think that it generates a ton of money - it's barely enough to buy one inexpensive book per year...
[+] [-] tfinch|12 years ago|reply
[+] [-] alexott|12 years ago|reply
[+] [-] yfefyf|12 years ago|reply
[+] [-] Kiro|12 years ago|reply
I can recommend Functional JavaScript by Michael Fogus.
[+] [-] agumonkey|12 years ago|reply
[+] [-] alexott|12 years ago|reply
[+] [-] dschiptsov|12 years ago|reply
So, to get a quick and productive crash-course I would recommend just a few selected resources.
* SICP based course CS 61A by Brian Harvey (Youtube)
* HtDP2 and a wonderful course based on it - Introduction to Systematic Program Design by Gregor Kiczales (the author of The Art Of Metaobject Protocol)
* Armstrong's thesys armstrong_thesis_2003.pdf and his Programming Erlang book.
* Programming Languages course by Dan Grossman (also on Coursera)
* Two Scala courses Martin Odersky
* The classic Haskell tutorial http://www.haskell.org/tutorial/
* ANSI CL and On Lisp books by pg.
This is a very decent start in my opinion. "To learn quickly read only the best ones".
[+] [-] platz|12 years ago|reply
[+] [-] _pmf_|12 years ago|reply
While Lisp can be used in a functional manner, the book does not really qualify as a book on functional programming.