Type Theory and Functional Programming (1999) [pdf]