An ad hoc approach to the implementation of polymorphism

Polymorphic abstraction provides the ability to write programs that are independent of the form of the data over which they operate. It has proved difficult to provide efficient implementations of polymorphism. This paper addresses this problem and describes a new technique which can implement all forms of polymorphism, use a conventional machine architecture and support non-uniform data representations. Furthermore, the method ensures that any extra cost of implementation applies to polymorphic forms only and allows such polymorphic forms to persist over program invocations.

[1]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[2]  Benjamin A. Dent,et al.  Burroughs' B6500/B7500 stack mechanism , 1968, AFIPS '68 (Spring).

[3]  John B. Johnston,et al.  The contour model of block structured processes , 1971, SIGP.

[4]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[5]  O. J. Dahl,et al.  Simula Begin , 1979 .

[6]  Juris Hartmanis,et al.  The Programming Language Ada , 1983, Lecture Notes in Computer Science.

[7]  Rod M. Burstall,et al.  HOPE: An experimental applicative language , 1980, LISP Conference.

[8]  Craig Schaffert,et al.  CLU Reference Manual , 1984, Lecture Notes in Computer Science.

[9]  Dennis McLeod,et al.  Database description with SDM: a semantic database model , 1981, TODS.

[10]  Robin Milner,et al.  Principal type-schemes for functional programs , 1982, POPL '82.

[11]  J. Fairbairn,et al.  Ponder and its type system , 1982 .

[12]  Ronald Morrison,et al.  An Approach to Persistent Programming , 1989, Comput. J..

[13]  Luca Cardelli The Functional Abstract Machine , 1983 .

[14]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[15]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..

[16]  Butler W. Lampson,et al.  A Kernel Language for Abstract Data Types and Modules , 1984, Semantics of Data Types.

[17]  Robin Milner,et al.  A proposal for standard ML , 1984, LFP '84.

[18]  Hans van Vliet,et al.  An evaluation of tagging , 1985, Softw. Pract. Exp..

[19]  Ronald Morrison,et al.  Procedures as persistent data objects , 1985, TOPL.

[20]  Renzo Orsini,et al.  GALILEO: a strongly-typed, interactive conceptual language , 1985, TODS.

[21]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[22]  John C. Mitchell,et al.  Abstract types have existential types , 1985, POPL.

[23]  David C. J. Matthews,et al.  Poly manual , 1985, SIGP.

[24]  Jon Fairbairn,et al.  A New Type-Checker for a Functional Language , 1986, Sci. Comput. Program..

[25]  Richard C. H. Connor,et al.  Polymorphism, persistence and software re-use in a strongly typed object-oriented environment , 1987, Softw. Eng. J..

[26]  Barry W. Boehm,et al.  Understanding and Controlling Software Costs , 1988, IEEE Trans. Software Eng..

[27]  Alan Dearle,et al.  Safe Browsing in a Strongly Typed Persistent Environment , 1988, Comput. J..

[28]  John C. Mitchell,et al.  Abstract types have existential type , 1988, TOPL.

[29]  Stefan Kaes,et al.  Parametric Overloading in Polymorphic Programming Languages , 1988, ESOP.

[30]  A. L. Brown,et al.  An Object Addressing Mechanism for Statically Types Languages with Multiple Inheritance , 1989, Conference on Object-Oriented Programming Systems, Languages, and Applications.

[31]  Ronald Morrison,et al.  An object addressing mechanism for statically typed languages with multiple inheritance , 1989, OOPSLA '89.

[32]  Richard C. H. Connor,et al.  The Persistent Abstract Machine , 1989, POS.

[33]  Philip Wadler,et al.  How to make ad-hoc polymorphism less ad hoc , 1989, POPL '89.

[34]  Richard C. H. Connor,et al.  The Napier Type System , 1989, POS.

[35]  David W. Stemple,et al.  Exceeding the Limits of Polymorphism in Database Programming Languages , 1990, EDBT.

[36]  Richard C. H. Connor,et al.  Existentially Quantified Typed as a Database Viewing Mechanism , 1990, EDBT.