The structure of typed programming languages - Schmidt, David A. (Foundations of Computing, 1994)