Small functions considered harmful
It seems like the author&#x27;s idea of the term <i>abstraction</i> is limited to substituting procedures with functions (or worse, class methods). The claims that &quot;all abstractions leak&quot; and that adherence to DRY makes code &quot;hard to follow&quot; is what gives me this impression. This line of thinking happens if you think of code in procedural terms.<p>And if your sense of abstraction is to hide procedural side-effects behind function applications then yes... I can see where you might get the idea.<p>A real abstraction like lambda doesn&#x27;t leak. Using Monads to compose side effects doesn&#x27;t leak. These are mathematical abstractions and we use them all of the time: even in programming and even if you don&#x27;t identify as someone who&#x27;s any good at maths. Learning the lambda calculus, algebra, and first-order logic will take you much farther than thinking in procedural steps.<p>Composing more interesting functions from smaller ones removes so many errors that procedural code has: removal of superfluous bindings, a more declarative style, and it makes code more more easy to reason about during refactoring: using familiar tools from mathematics we can manipulate expressions and types. This is where abstractions really shine: you can manipulate higher-level expressions without caring about the details of those at the lower level. This only really happens if you care about purity in languages that don&#x27;t do it for you and can reason using such tools.