I normally don’t like to have sales on my books, but the short story is that the PDF version of Functional Programming, Simplified is currently on sale for $15.
If Functional Programming, Simplified seems large, a) I intentionally wrote it in a simple, leisurely style, and b) it’s a lot easier than reading hundreds of blog posts and all of those books on the right (although a few of those books are really good).
SALE: I’ve lowered the price of the PDF version of Functional Programming, Simplified to $20 for the 2019 holiday season. I don’t know when I’ll increase it again, but the usual selling price is as high as $35.
When you get started with functional programming (FP) a common question you’ll have is, “What is an effect in functional programming?” You’ll hear advanced FPers use the words effects and effectful, but it can be hard to find a definition of what these terms mean.
I initially thought you couldn’t pass functions around in Dart (you can!), so I had to remember what we used to have to do with interfaces and inheritance. (See the image.)
Put another way, when you have the ability to pass functions into functions, it eliminates this kind of code interface/inheritance code.
I’ve written this before, but when I saw this “pseudocode to Scala code” example in the book Functional Thinking, I thought it was worth mentioning again: If you have trouble grokking the Scala
map method, think of it as being named
transform instead. It transforms an input collection to an output collection, based on the algorithm you supply.
For those coming from the OOP world, I think “transform” is a better word because it is more meaningful, at least initially.
“I though it was obvious, but apparently it's not. FP is not about not having side effects at all, otherwise it would be useless. It's just about deferring them for as long as possible, that's all.”
~ Alessandro Lacava, in this tweet
Back when I was writing Functional Programming, Simplified I started to write a little Scala/FP “To-Do List” application that you can run from the command line, based on a similar application in the Learn You A Haskell For Great Good book. For reasons I don’t remember, I decided not to include it in the book, and forgot about it until I started using GraalVM (“Graal”) recently.