Types and Programming Languages - Pierce (IEEE, 2003)