3 ms·
You might like "How to Design Programs": http://htdp.org/ http://htdp.org/ It appears to exclusively work with the usual FP understanding of computation as red
by Twisol 5y ago
You might like "How to Design Programs": http://htdp.org/ http://htdp.org/
It appears to exclusively work with the usual FP understanding of computation as reduction (simplification of an expression), avoiding all named mutable state. This is (in my opinion) the most important and fundamental difference between functional and imperative, and is something you miss if you try to learn FP in, say, JavaScript.
It also doesn't seem to assume any prior experience with programming. The last chapter even has a section specifically directed at students who aren't computer scientists or software developers.
- srcreigh 5y agoThe 1st year computer science programming class at Waterloo is based on the 1st edition of this book. (Not sure why not the 2nd edition--the waterloo website says so. [1]) The authors of this book are some of the major folks behind the Racket programming language. Mattias Felleisen, Matthew Flatt, Robert Findler, Shriram Krishnamurthi. You might recognize Shriram Krishnamurthi's name in the credits to PG's guide to Bel too [1] I didn't really use this book much directly - when I took that class in 2012, I mostly learned via the lectures, lecture slides, and doing via the assignments. The book is probably sufficient and you can probably talk to other people about it via Racket subreddit, IRC, etc [1]: https://student.cs.uwaterloo.ca/~cs135/cc/textbook/ https://student.cs.uwaterloo.ca/~cs135/cc/textbook/ [2]: https://sep.yimg.com/ty/cdn/paulgraham/bellanguage.txt?t=1595850613& https://sep.yimg.com/ty/cdn/paulgraham/bellanguage.txt?t=159...