Programming languages: principles and paradigms - Gabbrielli, Maurizio (Undergraduate topics in computer science, 2010)