Programming Languages and Systems - Gordon, Andrew D. (Springer Berlin Heidelberg, 2010)