Programming languages principles and paradigms - Gabbrielli, Maurizio; Martini, Simone (Springer, 2010)