Principles of programming languages - Tennent, R. D.