Types and programming languages - Pierce, Benjamin C., 1963- (The MIT Press, 2002)