Three approaches to type structure

  • John C. Reynolds
Advanced Seminar On The Role Of Semantics In Software Development The Role Of Semantics In Language Design
Part of the Lecture Notes in Computer Science book series (LNCS, volume 185)


We examine three disparate views of the type structure of programming languages: Milner's type deduction system and polymorphic let construct, the theory of subtypes and generic operators, and the polymorphic or second-order typed lambda calculus. These approaches are illustrated with a functional language including product, sum and list constructors. The syntactic behavior of types is formalized with type inference rules, but their semantics is treated intuitively.


Inference Rule Reduction Rule Type Expression Base Language Principal Typing 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Guttag, J.V., and Horning, J.J., "The Algebraic Specification of Abstract Data Types", Acta Informatica 10 (1), 1978, pp. 27–52.CrossRefGoogle Scholar
  2. 2.
    Goguen, J.A., Thatcher, J.W., and Wagner, E.G., "Initial Algebra Approach to the Specification, Correctness, and Implementation of Abstract Data Types", Current Trends in Programming Methodology, 4, Data Structuring, ed. R.T. Yeh, Prentice-Hall, Englewood Cliffs, 1978.Google Scholar
  3. 3.
    Kapur, D., "Towards a Theory for Abstract Data Types", Tech. Rep. TR-237, Laboratory for Computer Science, M.I.T., May 1980.Google Scholar
  4. 4.
    Coppo, M., and Dezani-Ciancaglini, M., "A New Type Assignment for λ-terms", Archive f. math. Logik u. Grundlagenforschung 19 (1979) 139–156.Google Scholar
  5. 5.
    Barendregt, H., Coppo, M., and Dezani-Ciancaglini, M., "A Filter Lambda Model and the Completeness of Type Assignment", to appear in the Journal of Symbolic Logic.Google Scholar
  6. 6.
    Martin-Lof, P., "Constructive Mathematics and Computer Programming", Proceedings of the Sixth (1979) International Congress for Logic, Methodology and Philosophy of Science, North-Holland, Amsterdam, 1979.Google Scholar
  7. 7.
    Constable, Robert L. and Zlatin, D.R., "The Type Theory of PL/CV3", ACM Transactions on Programming Languages and Systems, 6 (1984), 94–117.Google Scholar
  8. 8.
    Coquand, T., and Huet, G., "A Theory of Constructions", unpublished.Google Scholar
  9. 9.
    Burstall, R., and Lampson, B., "A Kernel Language for Abstract Data Types and Modules", Semantics of Data Types, eds. G. Kahn, D.B. MacQueen, and G. Plotkin, Lecture Notes in Computer Science 173, Springer-Verlag, Berlin (1984), pp. 1–50.Google Scholar
  10. 10.
    Reynolds, J.C., "The Essence of Algol", Algorithmic Languages, eds. J.W. de Bakker and J.C. van Vliet, North-Holland, 1981, pp. 345–372.Google Scholar
  11. 11.
    Oles, F.J., "A Category-Theoretic Approach to the Semantics of Programming Languages", Ph. D. dissertation, Syracuse University, August 1982.Google Scholar
  12. 12.
    Oles, F.J., "Type Algebras, Functor Categories, and Block Structure", Algebraic Methods in Semantics, eds. M. Nivat and J.C. Reynolds, Cambridge University Press (1985).Google Scholar
  13. 13.
    Henderson, P., and Morris, J.H., "A Lazy Evaluator". Proc. 3rd annual ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, Atlanta, 1976, 95–103.Google Scholar
  14. 14.
    Friedman, D.P., and Wise, D.S., "CONS Should not Evaluate its Arguments". In Automata, Languages and Programing, eds. Michaelson and Milner, Edinburgh University Press, 1976, 257–284.Google Scholar
  15. 15.
    Landin, P.J., "A Correspondence Between Algol 60 and Church's Lambda-Notation", Comm. ACM 8, (February–March 1965), pp. 89–101 and 158–165.CrossRefGoogle Scholar
  16. 16.
    McCarthy, J., "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I", Comm. ACM 3 (April 1960), pp. 184–195.CrossRefGoogle Scholar
  17. 17.
    MacQueen, D.B., and Sethi, R., "A Semantic Model of Types for Applicative Languages", ACM Symposium on LISP and Functional Programming, 1982, pp. 243–252.Google Scholar
  18. 18.
    McCracken, N., "An Investigation of a Programming Language with a Polymorphic Type Structure", Ph. D. dissertation, Syracuse University, June 1979.Google Scholar
  19. 19.
    McCracken, N.J., "A Finitary Retract Model for the Polymorphic Lambda-Calculus", submitted to Information and Control.Google Scholar
  20. 20.
    Reynolds, J.C., "Types, Abstraction and Parametric Polymorphism", Information Processing 83, ed. R.E.A. Mason, Elsevier Science Publishers B.V. (North-Holland) 1983, pp. 513–523.Google Scholar
  21. 21.
    Hindley, R., "The Principal Type-scheme of an Object in Combinatory Logic", Trans. Amer. Math. Society 146 (1969) 29–60.Google Scholar
  22. 22.
    Milner, R., "A Theory of Type Polymorphism in Programming", Journal of Computer and System Sciences 17 (1978), 348–375.CrossRefGoogle Scholar
  23. 23.
    Robinson, J.A., "A Machine-oriented Logic Based on the Resolution Principle", JACM 12, 1 (1965), 23–41.CrossRefGoogle Scholar
  24. 24.
    Strachey, C., "Fundamental Concepts in Programming Languages", Lecture Notes, International Summer School in Computer Programming, Copenhagen, August 1967.Google Scholar
  25. 25.
    Huet, G., "Resolution d'Équations dans des Langages d'Ordre 1,2,...,ω", doctoral thesis, University of Paris VII (September 1976).Google Scholar
  26. 26.
    Morris, F.L., "On List Structures and Their Use in the Programming of Unification", School of Computer and Information Science, Report 4–78, Syracuse University, 1978.Google Scholar
  27. 27.
    Reynolds, J.C., "Using Category Theory to Design Implicit Conversions and Generic Operators", Semantics-Directed Compiler Generation, Proceedings of a Workshop, Aarhus, Denmark, January 14–18, 1980, ed. N.D. Jones, Lecture Notes in Computer Science 94, Springer-Verlag, New York, pp. 211–258.Google Scholar
  28. 28.
    Goguen, J.A., "Order Sorted Algebras: Exceptions and Error Sorts, Coercions and Overloaded Operators", Semantics and Theory of Computation Report 14, Computer Science Department, UCLA (December 1978). To appear in Journal of Computer and Systems Science.Google Scholar
  29. 29.
    Cardelli, L., "A Semantics of Multiple Inheritance", Semantics of Data Types, eds. G. Kahn, D.B. MacQueen and G. Plotkin, Lecture Notes in Computer Science 173, Springer-Verlag, Berlin (1984), pp. 51–67.Google Scholar
  30. 30.
    Mitchell, J.C., and Plotkin, G.D., "Abstract Types Have Existential Type", Proc. 12th Annual ACM Symposium on Principles of Programming Languages, New Orleans, 1985.Google Scholar
  31. 31.
    Reynolds, J.C., "Towards a Theory of Type Structure, Proc. Colloque sur la Programmation, Lecture Notes in Computer Science 19, Springer-Verlag, New York, 1974, pp. 408–425.Google Scholar
  32. 32.
    Girard, J.-Y., "Interprétation Fonctionelle et Elimination des Coupures dans l'Arithmétique d'Ordre Supérieur", Thèse de Doctorat d'État, Paris, 1972.Google Scholar
  33. 33.
    Fortune, S., Leivant, D., and O'Donnell, M., "The Expressiveness of Simple and Second-Order Type Structures", Journal of the ACM 30, 1 (January 1983), pp. 151–185.Google Scholar
  34. 34.
    Leivant, D., "Reasoning About Functional Programs and Complexity Classes Associated with Type Disciplines", Twenty-fourth Annual Symposium on Foundation of Computer Science (1983) 460–469.Google Scholar
  35. 35.
    Böhm, C., and Berarducci, A., "Automatic Synthesis of Typed Λ-Programs on Term Algebras", submitted for publication.Google Scholar
  36. 36.
    Reynolds, J.C., "Polymorphism is not Set-Theoretic", Semantics of Data Types, eds. G. Kahn, D.B. MacQueen, and G. Plotkin, Lecture Notes in Computer Science 173, Springer-Verlag, Berlin (1984), pp. 145–156.Google Scholar
  37. 37.
    Leivant, D., "Polymorphic Type Inference", Proc. 10th Annual ACM Symposium on Principles of Programming Languages, Austin, 1983.Google Scholar
  38. 38.
    McCracken, N.J., "The Typechecking of Programs with Implicit Type Structure", Semantics of Data Types, eds. G. Kahn, D.B. MacQueen, and G. Plotkin, Lecture Notes in Computer Science 173, Springer-Verlag, Berlin (1984), pp. 301–315.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1985

Authors and Affiliations

  • John C. Reynolds
    • 1
  1. 1.Syracuse UniversitySyracuseU.S.A.

Personalised recommendations