Types and Programming Languages - Benjamin C Pierce (Prentice-Hall, 2004)