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