Design concepts in programming languages - Turbak, Franklyn Albin (MIT Press, 2008)