This is a great book.<p>This wasn't mentioned in the past thread. Alex presents his ideas in my forms. This one happens to be the most terse and mathematical. That can be good, but I think "From Mathematics to Generic Programming" is much more generally approachable.<p>One practical skill that's shown well in this book is writing functions that solve the easiest or special cases, and then layering those into general functions which ensure the preconditions for applying one of those special cases are met. It makes very readable code, and anytime a user of the code knows they have a special case, they can assert it and use the special one for some performance advantages.
See also a previous discussion of the book:
<a href="https://news.ycombinator.com/item?id=20437347" rel="nofollow">https://news.ycombinator.com/item?id=20437347</a>