Comment by fouronnes3
3 years ago
Slightly unrelated, but this thread is giving me a serious learning itch. Any book or online class recommendations on lambda calculus, combinators and that whole area of CS? Preferably written for the experienced programmer but very average mathematician.
This is a classic book (related to lambda calculus):
https://en.wikipedia.org/wiki/To_Mock_a_Mockingbird
This is a very cool article on lambda calculus that relates to it:
https://dkeenan.com/Lambda/
I haven't read the book, but the description gives me strong diamond age vibes. Is it somewhat like the described book?
I enjoyed The Implementation of Functional Programming Languages by Simon Peyton Jones. It's how you would implement a Haskell like language (well, Miranda like, but that's more or less the the closed source precursor to haskell) using lambda calculus. It goes through lambda calculus, type checking, combinators and super combinators, and G-machines.
[] - https://www.microsoft.com/en-us/research/publication/the-imp...
I'd say https://www.cis.upenn.edu/~bcpierce/tapl/ is the ultimate bible on this topic.
During my semester we only went through a few of its chapters but it was very enjoyable in my opinion.
Also check out the "sequel" https://www.cis.upenn.edu/~bcpierce/attapl/. Pierce wrote the first book whereas this one is a series of articles edited by Pierce. However Advanced Topics covers a few areas that I have been hard pressed to find covered in other places. Row types, dependent types, linear types, etc.
Good workshop/lecture in PyCon by David Beazley https://youtu.be/pkCLMl0e_0k
I wrote https://computationbook.com/ for that audience.
An Introduction to Functional Programming Through Lambda Calculus by Greg Michaelson really spells out the lambda calculus.
Regarding combinators the famous intro is the latter half of Raymond Smullyan's To Mock a Mockingbird.
Ha, Greg was my lecturer at Heriot-Watt for a few classes. I revisited his book last year during lockdown and would recommend it.
If you’re starting from zero this old classic could serve as an appetiser: https://tomstu.art/programming-with-nothing