Essentials of programming languages - FRIEDMAN, Daniel P (MIT Press, 2008)