Thompson, S. (1991). Type Theory and Functional Programming.