3 ms·
I definitely agree with the Schemer series. I wouldn't leave off the The Reasoned Schemer, I've been working on that book for over a month now. Better than coff
by swannodette 16y ago
I definitely agree with the Schemer series. I wouldn't leave off the The Reasoned Schemer, I've been working on that book for over a month now. Better than coffee. Might actually finally understand monads.
SICP is astounding. Thoroughly worked through the first three chapters years ago. I'm constantly revisiting the later chapters.
I haven't worked through CTMCP, but that book is written in a lovely, compelling style with eye-opening statements on nearly every page. I'm also also finding that it's the ultimate Clojure book.
- silentbicycle 16y agoWe've already talked about _The Reasoned Schemer_ in another thread. :) I may give it a try again eventually. Clocksin's _Clause and Effect_ is a similar book, in Prolog. Monads aren't that hard, they're just one step too general - at first, it's not clear what their examples have in common. It helped when I realized I'd already written "monadic" code in OCaml and Scheme, and with pipelines in shell scripts. (Getting away from the avalanche of category theory terminology mixed with nonsense about burritos and space suits also helped. The epiphany itself matters, not the stepping stone!) Also, starting with a simpler monad (e.g. Maybe) makes the plumbing clearer. For interpreters / compilers, I prefer the treatment in EoPL to SICP's. There's an awesome "converting an interpreter to a continuation-passing-style interpreter to a CPS-based compiler" section in (only) the first edition of EoPL. What really impresses me about CTM is how much deep material it ties together, from all over the place, yet the book is still extremely easy to follow. Somebody just starting in CS could benefit tremendously from reading its take on concepts when their other textbooks stump them. It's one of the most readable textbooks I've seen. (PAIP is another.)
- infinite8s 16y agoTo understand monads in a context where they are both useful and necessary (Haskell) I highly recommend the later chapters of Learn You a Haskell for Great Good (http://learnyouahaskell.com/ http://learnyouahaskell.com/). I'd read through all the different analogies (burritos, space suits, etc) and it didn't click until LYAHFGG showed how they are a logical way of attaching some extra context to a bit of data (or more generally a computation).