Programming Languages: Principles and Paradigms - Maurizio Gabbrielli, Simone Martini ((Undergraduate Topics in Computer Science))