Abstract
PolyTOIL is a new statically-typed polymorphic object-oriented programming language which is provably type-safe. By separating the definitions of subtyping and inheritance, providing a name for the type of self, and carefully defining the type-checking rules, we have obtained a language which is very expressive while supporting modular type-checking of classes. The matching relation on types, which is related to F-bounded quantification, is used both in stating type-checking rules and expressing the bounds on type parameters for polymorphism. The design of PolyTOIL is based on a careful formal definition of type-checking rules and semantics. A proof of type safety is obtained with the aid of a subject reduction theorem.
This research was partially supported by NSF grant CCR-9121778. The full paper is available via anonymous ftp from cs.williams.edu in pub/kim/PolyTOIL.dvi or on the world-wide web through http://cs.williams.edu/~kim.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Roberto Amadio and Luca Cardelli. Subtyping recursive types. ACM Transactions on Programming Languages and Systems, 15(4):575–631, 1993.
Martin Abadi and Luca Cardelli. An imperative object calculus. Manuscript, 1994.
Martin Abadi and Luca Cardelli. A theory of primitive objects: second-order systems. In Proc. ESOP’ 94. Springer-Verlag, 1994. to appear.
Martin Abadi and Luca Cardelli. A theory of primitive objects: untyped and first-order systems. In Proc. Theoretical Aspects of Computer Software. Springer-Verlag, 1994. to appear.
[BCD+93]_K. Bruce, J. Crabtree, A. Dimock, R. Muller, T. Murtagh, and R. van Gent. Safe and decidable type checking in an object-oriented language. In Proc. ACM Symp. on Object-Oriented Programming: Systems, Languages, and Applications, pages 29–46, 1993.
K. Bruce, J. Crabtree, and G. Kanapathy. An operational semantics for TOOPLE: A statically-typed object-oriented programming language. In S. Brookes, M. Main, A. Melton, M. Mislove, and D. Schmidt, editors, Mathematical Foundations of Programming Semantics, pages 603–626. LNCS 802, Springer-Verlag, 1994.
Gilad Bracha and David Griswold. Strongtalk: Typechecking Smalltalk in a production environment. In Proc. ACM Symp. on Object-Oriented Programming; Systems, Languages, and Applications, pages 215–230, 1993.
A. Black and N. Hutchinson. Typechecking polymorphism in Emerald. Technical Report CRL 91/1 (Revised), DEC Cambridge Research Lab, 1991.
K. Bruce. Safe type checking in a statically typed object-oriented programming language. In Proc. ACM Symp. on Principles of Programming Languages, pages 285–298, 1993.
K. Bruce. A paradigmatic object-oriented programming language: design, static typing and semantics. Journal of Functional Programming, 4(2): 127–206, 1994.
Kim B. Bruce, Angela Schuett, and Robert van Gent. PolyTOIL: A type-safe polymorphic object-oriented language. Technical report, Williams College, 1994.
Kim B. Bruce and Robert van Gent. TOIL: A new type-safe object-oriented imperative language. Technical report, Williams College, 1993.
[CCH+89]_P. Canning, W. Cook, W. Hill, J. Mitchell, and W. Olthoff. F-bounded quantification for object-oriented programming. In Functional Prog. and Computer Architecture, pages 273–280, 1989.
William R. Cook, Walter L. Hill, and Peter S. Canning. Inheritance is not subtyping. In Proc. 17th ACM Symp. on Principles of Programming Languages, pages 125–135, January 1990.
W.R. Cook. A proposal for making Eiffel type-safe. In European Conf. on Object-Oriented Programming, pages 57–72, 1989.
Mark Day, Robert Gruber, Barbara Liskov, and Andrew C. Meyers. Abstraction mechanisms in Theta. Technical report, MIT Laboratory for Computer Science, 1994.
Margaret A. Ellis and Bjarne Stroustrop. The annotated C ++ reference manual. Addison-Wesley, 1990.
J. Eifrig, S. Smith, V. Trifonov, and A. Zwarico. Application of OOP type theory: State, decidability, integration. In Proceedings of OOPSLA’ 94, pages 16–30, 1994.
A. Goldberg and D. Robson. Smalltalk-80: The language and its implementation. Addison Wesley, 1983.
Dinesh Katiyar, David Luckham, and John Mitchell. A type system for prototyping languages. In 21st ACM Symp. Principles of Programming Languages, pages 138–150, 1994.
B. Meyer. Eiffel: the language. Prentice-Hall, 1992.
O. Madsen, B. Magnusson, and B. Moller-Pedersen. Strong typing of object-oriented languages revisited. In OOPSLA-ECOOP’ 90 Proceedings, pages 140–150. ACM SIGPLAN Notices, 25(10), October 1990.
Benjamin C. Pierce. Mutable objects. Technical report, University of Edinburgh, 1993.
Benjamin C. Pierce and David N. Turner. Simple type-theoretic foundations for object-oriented programming. Journal of functional programming, 4:207–247, 1994. An earlier version appeared in Proc. of POPL’ 93, pp. 299–312.
J.C. Reynolds. Using category theory to design implicit conversions and generic operators. In N.D. Jones, editor, Semantics-Directed Compiler Generation, pages 211–2580. Springer-Verlag Lecture Notes in Computer Science, Vol. 94, 1980.
L. Tesler. Object Pascal report. Technical Report 1, Apple Computer, 1985.
Robert van Gent. TOIL: An imperative type-safe object-oriented language. Williams College Senior Honors Thesis, 1993.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1995 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Bruce, K.B., Schuett, A., van Gent, R. (1995). PolyTOIL: A Type-Safe Polymorphic Object-Oriented Language. In: Tokoro, M., Pareschi, R. (eds) ECOOP’95 — Object-Oriented Programming, 9th European Conference, Åarhus, Denmark, August 7–11, 1995. ECOOP 1995. Lecture Notes in Computer Science, vol 952. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-49538-X_3
Download citation
DOI: https://doi.org/10.1007/3-540-49538-X_3
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-60160-9
Online ISBN: 978-3-540-49538-3
eBook Packages: Springer Book Archive