Programming Languages and Systems - Peter Thiemann (Springer, 2016)