Functional Programming For The Rest of Us
Kudos to the piece for being well written, readable, and clear.  But I'm worried about a "for the rest of us" that starts off with first Plato and then lambda calculus.<p>The problem with "the rest of us" is that these concepts aren't inherently neat.  Disclaimer: I'm not one of "rest of us".  I'm learning Haskell, just because I enjoy having to think in a new way.<p>A lot of FP explanations start off with immutability.  After plato and lambda calc, that's where this one goes, too.  I think because it's a relatively simple concept, and kind of mind blowing that you could do something useful without incrementing i in a for loop.  And then the follow up example is normally how you can replicate a for loop in functional programming.  Which is again neat.<p>But if you aren't into neat things for their own sakes, you've got to ask why?  Why replicate a for loop when you could just use one?  (answer: you don't really replicate for loops in FP)  They aren't asking why, in the sense that they're curious.  They're asking why in the sense of "Why would anyone do that?  That's stupid."<p>If you aren't into having your mind blown for no apparent reason (some aren't) the only really compelling thing about the first several pages of the piece is the "Benefits of FP".  That's the motivation to learn these crazy new concepts. It should really come first.  I think it should come first in any discussion of FP for people who aren't familiar with it.<p>Because for most people to learn, they need a motivation.  Your programs will be faster because you can do concurrency super easy is pretty good motivation.  Sadly, "because it's neat," is generally not.