Types and Programming Languages
Benjamin C. Pierce
Advanced Topics in Types and Programming Languages