The Pillars of Functional Programming (via @gappy3000).