Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

In functional programming:

[0] The Structure and Interpretation of Computer Programs

[1] The_Little_Schemer

[2] Programming in Haskell - Graham Hutton

[3] Types and Programming Languages-Benjamin C. Pierce

--- PDFS

[0](https://github.com/allenleein/brains/blob/master/Zen-of-Func...)

[1](https://github.com/allenleein/brains/blob/master/Zen-of-Func...)

[2](https://github.com/allenleein/brains/blob/master/Zen-of-Func...)

[3](https://github.com/allenleein/brains/blob/master/Zen-of-Func...)



I am not an expert, but maybe because of that I believe that I can offer valuable advice to those who are totally new to functional programming (or feel that they are missing something), and want to get the core basics down cold without getting drowned in accidental complexity, do yourself a favor and start with edx's free moocs "How To Code" [1] [2], which are based on "How To Design Programs" [3]. After that, you will cruise through the recommended classics above.

If interested in why if you are an FP newbie said material is superior to SICP , read the pdf paper "The Structure and Interpretation of the Computer Science Curriculum" [4]

[1] https://www.edx.org/course/how-code-simple-data-ubcx-htc1x

[2] https://www.edx.org/course/how-code-complex-data-ubcx-htc2x

[3] https://htdp.org/

[4] https://www2.ccs.neu.edu/racket/pubs/jfp2004-fffk.pdf


Thank you so much, that sounds like exactly what I need to make a (successful this time) deep dive into FP. Cheers!


I would add Concepts, Techniques, and Models of Computer Programming. It's about programming paradigms in general, and helps in contextualizing functional programming in a broader context

https://www.info.ucl.ac.be/~pvr/book.html


This book is indeed mind blowing, and after reading it I find all those FP vs OO arguments sterile. As you say, this book makes you understand that it's all a trade-off.

In fact what this book does is advocate multiparadigm languages (actually the author dislikes the term paradigm, multiple programming models would be more acurate), and explains in great detail how to decide which to use when, and how to mix different paradigms (ehem, models) with the very powerful technique of impedance matching.


Thanks for this. I do not see enough context in school.


I just finished re-reading SICP. If you're going to read it on a screen, I recommend this version: http://sarabander.github.io/sicp/

I'm 1/3 of the way through The Little Schemer. So far, it's not taught me anything I didn't already grok from SICP. I hope it picks up!


I cruised through most of it. But the last three chapters really twisted my brain (continuations, the Y combinator, and the metacircular interpreter). I was familiar with the concepts, but figuring out the programs by myself was a tough exercise (I haven't read SICP though).


> If you're going to read it on a screen, I recommend this version: http://sarabander.github.io/sicp/

Thank you very much for the link! :)

Opening it on my phone, this paragraph on the available ebook formats very much made my day:

> A 386 can, in theory, run Linux, Emacs, and a Scheme interpreter simultaneously, but most 386s probably can’t also run both Netscape and the necessary X Window System without prematurely introducing budding young underfunded hackers to the concept of thrashing.


Trust me, it will :) The last few chapters on CPS and the Y combinator are roughly a vertical segment on an otherwise nearly horizontal learning curve.


From someone interested in learning more functional programming, could you provide a bit more detail about what each book provides?


I would also add "ML for the working programmer", which is, perhaps surprisingly, more about functional programming than the particularities of ML. In any case, it is a great book.


It is one of the only accessible texts on Standard ML, I'll give it that... But it goes neither deep nor wide in content. I did not find it very useful.


Some other texts w/SML:

The Little MLer: http://www.ccs.neu.edu/home/matthias/BTML/ which you can read with the revised Programming in SML http://www.cs.cmu.edu/~rwh/isml/book.pdf

Discrete Math & Functional Programming: https://cs.wheaton.edu/~tvandrun/dmfp/

Parallel & Sequential Algorithms uses SPARC which is similar to SML for examples in the book http://www.parallel-algorithms-book.com/


On top Scala programming books see: http://www.aioptify.com/top-scala-books.php

On Erlang programming books see the following list: http://www.aioptify.com/top-erlang-programming-books.php




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: