Type theory and functional programming. (1999) [pdf]