Essentials of programming languages - Friedman, Daniel P.; Wand, Mitchell (MIT Press, 2008)