Abstract
The study of type systems has emerged as one of the most active areas of research in programming languages, with applications in software engineering, language design, high-performance compiler implementation, and security. This chapter discusses the motivations and history of type systems and their role in programming language design.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Martin Abadi. Secrecy by typing in security protocols. Journal of the ACM,46(5):749–786, September 1999. Summary in the Proceedings of TACS ‘87,LNCS 1281, Springer.
Martin Abadi, Anindya Banerjee, Nevin Heintze, and Jon G. Riecke. A core calculus of dependency. In ACM, editor, POPL ‘89. Proceedings of the 26th ACM SIGPLAN-SIGACT on Principles of programming languages, January 20–22, 1999, San Antonio, TX, ACM SIGPLAN Notices, pages 147–160, New York, NY, USA, 1999. ACM Press.
Martin Abadi and Luca Cardelli. A Theory of Objects. Springer-Verlag, 1996.
Ken Arnold, Ann Wollrath, Bryan O’Sullivan, Robert Scheifler, and Jim Waldo. The Jini specification. Addison-Wesley, 1999.
John Backus. The history of Fortran I, II, and III. In R. L. Wexelblat, editor, History of Programming Languages, pages 25–45. Academic Press, 1981.
Henk Barendregt. Introduction to generalized type systems. Journal of Functional Programming, 1992.
Bruno Barras, Samuel Boutin, Cristina Cornes, Judicael Courant, Jean-Christophe Filliatre, Eduardo Gimenez, Hugo Herbelin, Gerard Huet, Cesar Munoz, Chetan Murthy, Catherine Parent, Christine Paulin-Mohring, Amokrane Saibi, and Benjamin Werner. The coq proof assistant reference manual: Version 6.1. Technical Report RT-0203, Inria ( Institut National de Recherche en Informatique et en Automatique ), France, 1997.
Graham M. Birtwistle, Ole-Johan Dahl, Bjorn Myhrhaug, and Kristen Nygaard. Simula Begin. Studentlitteratur (Lund, Sweden), Bratt Institut fuer neues Lernen (Goch, FRG), Chartwell-Bratt Ltd, 1979.
Luca Cardelli. A semantics of multiple inheritance. In G. Kahn, D. MacQueen, and G. Plotkin, editors, Semantics of Data Types, volume 173 of Lecture Notes in Computer Science, pages 51–67. Springer-Verlag, 1984. Full version in Information and Computation 76(2/3):138–164, 1988.
Luca Cardelli. Notes about F’.. Unpublished manuscript, October 1990.
Luca Cardelli. Typeful programming. In E. J. Neuhold and M. Paul, editors, Formal Description of Programming Concepts. Springer-Verlag, 1991. An earlier version appeared as DEC Systems Research Center Research Report #45, February 1989.
Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, and Greg Nelson. Modula-3 report (revised). Research report 52, DEC Systems Research Center, November 1989.
Luca Cardelli and Giuseppe Longo. A semantic basis for Quest. Journal of Functional Programming, 1(4):417–458, October 1991. Preliminary version in ACM Conference on Lisp and Functional Programming, June 1990. Also available as DEC SRC Research Report 55, Feb. 1990.
Luca Cardelli, Simone Martini, John C. Mitchell, and Andre Scedrov. An extension of system F with subtyping. Information and Computation, 109(1–2):4–56, 1994. Preliminary version in TACS ‘81, Sendai, Japan, pp. 750–770.
Luca Cardelli and John Mitchell. Operations on records. Mathematical Structures in Computer Science,1:3–48, 1991. Also in Carl A. Gunter and John C. Mitchell, editors, Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design (MIT Press, 1994); available as DEC Systems Research Center Research Report #48, August, 1989, and in the proceedings of MFPS ‘89, LNCS 442, Springer.
Luca Cardelli and Peter Wegner. On understanding types, data abstraction, and polymorphism. Computing Surveys, 17 (4): 471–522, December 1985.
Alonzo Church. A formulation of the simple theory of types. Journal of Symbolic Logic, 5: 56–68, 1940.
Alonzo Church. The Calculi of Lambda Conversion. Princeton University Press, 1941.
Robert L. Constable et al. Implementing Mathematics with the NuPRL Proof Development System. Prentice—Hall, 1986.
M. Coppo and M. Dezani-Ciancaglini. A new type-assignment for A-terms. Archiv Math. Logik, 19: 139–156, 1978.
M. Coppo, M. Dezani-Ciancaglini, and P. Salle. Functional characterization of some semantic equalities inside A-calculus. In Hermann A. Maurer, editor, Proceedings of the 6th Colloquium on Automata, Languages and Programming, LNCS 71, 133–146, Graz, Austria, July 1979. Springer.
Thierry Coquand. Une Théorie des Constructions. PhD thesis, University Paris VII, January 1985.
Thierry Coquand and Gérard Huet. The Calculus of Constructions. Information and Computation, 76 (2/3): 95–120, February/March 1988.
Pierre-Louis Curien and Giorgio Ghelli. Coherence of subsumption: Minimum typing and type-checking in F. Mathematical Structures in Computer Science, 2:55–91, 1992. Also in Carl A. Gunter and John C. Mitchell, editors, Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design (MIT Press, 1994 ).
H. B. Curry and R. Feys. Combinatory Logic, volume 1. North Holland, 1958. (Second edition, 1968 ).
Luis Damas and Robin Milner. Principal type schemes for functional programs. In Proceedings of the 9th ACM Symposium on Principles of Programming Languages, pages 207–212, 1982.
Nicolas G. de Bruijn. A survey of the project AUTOMATH. In J. P. Seldin and J. R. Hindley, editors, To H. B. Curry: Essays in Combinatory Logic, Lambda Calculus, and Formalism, pages 589–606. Academic Press, 1980.
David L. Detlefs, K. Rustan M. Leino, Greg Nelson, and James B. Saxe. Extended static checking. Technical Report 159, Compaq Systems Research Center (SRC), 1998. Alsoseehttp://research.compaq.com/SRC/esc/overview.html.
R. Kent Dybvig. The Scheme Programming Language. Prentice-Hall, 1987.
Peter Eidorff, Fritz Henglein, Christian Mossin, Henning Niss, Morten Heine B. Sorensen, and Mads Tofte. Annodomini in practice: A type-theoretic approach to the year 2000 problem. In Jean-Yves Girard, editor, Proc. Symposium on Typed Lambda Calculus and Applications (TLCA), volume 1581 of Lecture Notes in Computer Science, pages 6–13, L’Aquila, Italy, April 1999. Springer-Verlag.
Gottlob Frege. Begriffschrift, eine der arithmetischen nachgebildete Formelsprache des reinen Denkens. Halle: L. Nebert, 1879.
R. O. Gandy. The simple theory of types. In Logic Colloquium 76, volume 87 of Studies in Logic and the Foundations of Mathematics, pages 173–181. North Holland, 1976.
D. Gifford, P. Jouvelot, J. Lucassen, and M. Sheldon. FX-87 REFERENCE MANUAL. Technical Report MIT-LCS//MIT/LCS/TR-407, Massachusetts Institute of Technology, Laboratory for Computer Science, September 1987.
Jean-Yves Girard. Interprétation fonctionelle et élimination des coupures de l’arithmétique d’ordre supérieur. PhD thesis, Université Paris VII, 1972. A summary appeared in the Proceedings of the Second Scandinavian Logic Symposium (J.E. Fenstad, editor), North-Holland, 1971 (pp. 63–92 ).
Jean-Yves Girard. Linear logic. Theoretical Computer Science, 50: 1–102, 1987.
Jean-Yves Girard, Yves Lafont, and Paul Taylor. Proofs and Types, volume 7 of Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, 1989.
Michael J. Gordon, Robin Milner, and Christopher P. Wadsworth. Edinburgh LCF. LNCS 78, Springer-Verlag, 1979.
Robert Harper, Furio Honsell, and Gordon Plotkin. A framework for defining logics. Journal of the ACM, 40(1):143–184,1992. Preliminary version in LICS’87.
Robert Harper and Mark Lillibridge. A type-theoretic approach to higher-order modules with sharing. In Proceedings of the Twenty-First ACM Symposium on Principles of Programming Languages (POPL), Portland, Oregon, pages 123–137, Portland, Oregon, January 1994.
Fritz Henglein and Harry G. Mairson. The complexity of type inference for higher-order typed lambda-calculi. In Proceedings of the Eighteenth ACM Symposium on Principles of Programming Languages, pages 119–130, Orlando, FL, January 1991.
J. Roger Hindley. Basic Simple Type Theory, volume 42 of Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, 1997.
W. A. Howard. The formulas-as-types notion of construction. In J. P. Seldin and J. R. Hindley, editors, To H. B. Curry: Essays on Combinatory Logic, Lambda Calculus, and Formalism, pages 479–490. Academic Press, 1980. Reprint of 1969 article.
Richard Kelsey, William Clinger, and Jonathan Rees. Revised report on the algorithmic language Scheme. ACM SIGPLAN Notices,33(9):26–76, September 1998. With H. Abelson, N. I. Adams, IV, D. H. Bartley, G. Brooks, R. K. Dybvig, D. P. Friedman, R. Halstead, C. Hanson, C. T. Haynes, E. Kohlbecker, D. Oxley, K. M. Pitman, G. J. Rozas, G. L. Steele, Jr., G. J. Sussman, and M. Wand.
Andrew Kennedy. Dimension types. In Donald Sannella, editor, Programming Languages and Systems—ESOP’94, 5th European Symposium on Programming, volume 788 of Lecture Notes in Computer Science, pages 348–362, Edinburgh, U.K., 11–13 April 1994. Springer.
Xavier Leroy. Manifest types, modules and separate compilation. In Conference record of POPL ‘84: 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 109–122, Portland, Oregon, January 1994.
Xavier Leroy. The objective caml system: Documentation and user’s manual, 2000. With Damien Doligez, Jacques Garrigue, Didier Rémy, and Jfôme Vouillon. Available from ht tp:// caml. inr i a. f r.
Xavier Leroy and François Rouaix. Security properties of typed applets. In Conference Record of POPL 98: The 25TH ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Diego, California, pages 391–403, ACM, 1998.
B. Liskov, R. Atkinson, T. Bloom, E. Moss, J.C. Schaffert, R. Scheifler, and A. Snyder. CLU Reference Manual. Springer-Verlag, 1981.
Zhaohui Luo and Robert Pollack. The LEGO proof development system: A user’s manual. Technical Report ECS-LFCS-92–211, University of Edinburgh, May 1992.
David MacQueen. Using dependent types to express modular structure. In 13th Annual ACM Symposium on Principles of Programming languages, pages 277–286, St. Petersburg Beach, Florida, January 1986.
Lena Magnusson and Bengt Nordström. The ALF proof editor and its proof engine. In Henk Barendregt and Tobias Nipkow, editors, Types for Proofs and Programs, pages 213–237. LNCS 806, Springer-Verlag, 1994.
Per Martin-Löf. An intuitionistic theory of types: predicative part. In H. E. Rose and J. C. Shepherdson, editors, Logic Colloquium, ’73, pages 73–118, Amsterdam, 1973. North Holland.
Per Martin-Löf. Constructive mathematics and computer programming. In Logic, Methodology and Philosophy of Science, VI. North Holland, Amsterdam, 1982.
Robin Milner. A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17: 348–375, August 1978.
John C. Mitchell. Coercion and type inference (summary). In Proc. 11th ACM Symp. on Principles of Programming Languages, pages 175–185, January 1984.
John C. Mitchell and Gordon D. Plotkin. Abstract types have existential types. ACM Trans. on Programming Languages and Systems, 10(3):470–502, 1988. Preliminary version appeared in Proc. 12th ACM Symp. on Principles of Programming Languages, 1985.
Greg Morrisett, David Walker, Karl Crary, and Neal Glew. From System F to Typed Assembly Language. In Twenty-fifth ACM Symposium on Principles of Programming Languages, pages 85–97, San Diego, January 1998.
Gopalan Nadathur and Dale Miller. An overview of)Prolog. In Robert A. Kowalski and Kenneth A. Bowen, editors, Logic Programming: Proceedings of the Fifth International Conference and Symposium, Volume 1, pages 810–827, Cambridge, Massachusetts, August 1988. MIT Press.
R. Naur et al. Revised report on the algorithmic language Algol 60. Communications of the ACM, 6: 1–17, January 1963.
G. C. Necula and P. Lee. Safe, untrusted agents using proof-carrying code. In G. Vigna, editor, Mobile Agents and Security, LNCS 1419 pages 61–91. Springer-Verlag, 1998.
George C. Necula. Proof-carrying code. In Conference Record of POPL ‘87: The 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages pages 106–119, Paris, France, 15–17 January 1997.
George C. Necula and Peter Lee. Safe kernel extensions without run-time checking. In 2nd Symposium on Operating Systems Design and Implementation (OSDI ’96),October 28–31, 1996, Seattle, WA, pages 229–243, Berkeley, California, USA, October 1996. USENIX Press.
Greg Nelson, editor. Systems Programming with Modula-3. Prentice Hall, 1991.
Frank Pfenning. Elf: A meta-language for deductive systems. In A. Bundy, editor, Proceedings of the 12th International Conference on Automated Deduction, pages 811–815, Nancy, France, June 1994. LNAI 814, Springer-Verlag.
Benjamin C. Pierce. Type Systems and Programming Languages. MIT Press. To appear, 2002.
Benjamin C. Pierce and David N. Turner. Pict: A programming language based on the pi-calculus. Technical Report CSCI 476, Computer Science Department, Indiana University, 1997. In Proof Language and Interaction: Essays in Honour of Robin Milner, Gordon Plotkin, Colin Stirling, and Mads Tofte, editors, MIT Press, 2000.
Robert Pollack. The Theory of LEGO: A Proof Checker for the Extended Calculus of Constructions. PhD thesis, University of Edinburgh, 1994.
Garrell Pottinger. A type assignment for the strongly normalizable A-terms. In To H. B. Curry: Essays on Combinatory Logic, Lambda Calculus, and Formalism, pages 561–577. Academic Press, 1980.
Didier Rémy. Typechecking records and variants in a natural extension of ML. In Proceedings of the Sixteenth Annual ACM Symposium on Principles of Programming Languages, Austin, pages 242–249. ACM, January 1989. Also in Carl A. Gunter and John C. Mitchell, editors, Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design, MIT Press, 1994.
John Reynolds. Towards a theory of type structure. In Proc. Colloque sur la Programmation, pages 408–425, New York, 1974. LNCS 19, Springer-Verlag.
John Reynolds. Using category theory to design implicit conversions and generic operators. In N. D. Jones, editor, Proceedings of the Aarhus Workshop on Semantics-Directed Compiler Generation, LNCS 94, Springer-Verlag, January 1980. Also in Carl A. Gunter and John C. Mitchell, editors, Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design, MIT Press, 1994.
John C. Reynolds. Preliminary design of the programming language Forsythe. Technical Report CMU-CS-88–159, Carnegie Mellon University, June 1988.
Gerald Jay Sussman and Jr. Steele, Guy Lewis. Scheme: an interpreter for extended lambda calculus. MIT AI Memo 349, Massachusetts Institute of Technology, Cambridge, Mass., December 1975.
J.-P. Talpin and P. Jouvelot. The type and effects discipline. In Proc. IEEE Symp. on Logic in Computer Science, pages 162–173, 1992.
D. Tarditi, G. Morrisett, P. Cheng, C. Stone, R. Harper, and P. Lee. TIL: A type-directed optimizing compiler for ML. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implemantation,pages 181–192, New York, May 21–24 1996. ACM Press.
J. E. A. K. van Benthem and Alice Ter Meulen, editors. Handbook of Logic and Language. MIT Press, 1997.
Johan van Benthem. Language in Action: Categories, Lambdas, and Dynamic Logic. MIT Press, 1995.
Mitchell Wand. Complete type inference for simple objects. In Proceedings of the IEEE Symposium on Logic in Computer Science, Ithaca, NY, June 1987.
Alfred North Whitehead and Bertrand Russell. Principia Mathematica. Cambridge University Press, 1910. Three volumes (1910; 1912; 1913).
Christoph Wille. Presenting C#. SAMS, 2000.
Extensible markup language(XMLTM).http://www.w3.org/XML/.
XML Schema Part 0: Primer, W3C Working Draft. http://www.w3.org/TR/xmischema-0/,2000.
Kathy Yelick, Luigi Semenzato, Geoff Pike, Carleton Miyamoto, Ben Liblit, Arvind Krishnamurthy, Paul Hilfinger, Susan Graham, David Gay, Phil Colella, and Alex Aiken. Titanium: a high-performance Java dialect. Concurrency: Practice and Experience,10(11–13):825–836, September 1998. Special Issue: Java for High-performance Network Computing.
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer Science+Business Media New York
About this chapter
Cite this chapter
Pierce, B.C. (2003). Type systems. In: McIver, A., Morgan, C. (eds) Programming Methodology. Monographs in Computer Science. Springer, New York, NY. https://doi.org/10.1007/978-0-387-21798-7_14
Download citation
DOI: https://doi.org/10.1007/978-0-387-21798-7_14
Publisher Name: Springer, New York, NY
Print ISBN: 978-1-4419-2964-8
Online ISBN: 978-0-387-21798-7
eBook Packages: Springer Book Archive