Types and programming languages - Pierce, Benjamin (New Delhi Prantice hall, 2002)