Text this: Types and programming languages / Benjamin C. Pierce.