Polymorphism and type inference in database programming

In order to find a static type system that adequately supports database languages, we need to express the most general type of a program that involves database operations. This can be achieved through an extension to the type system of ML that captures the polymorphic nation of field selection, together with a techniques that generalizes relational operators to arbitrary data structures. The combination provides a statically typed language in which generalized relational databases may be cleanly represented as typed structures. As in ML types are inferred, which relieves the programmer of making the type assertions that may be required in a complex database environment. These extensions may also be used to provide static polymorphic typechecking in object-oriented languages and databases. A problem that arises with object-oriented databases is the apparent need for dynamic typechecking when dealing queries on heterogeneous collections of objects. An extension of the type system needed for generalized relational operations can also be used for manipulating collections of dynamically typed values in a statically typed language. A prototype language based on these ideas has been implemented. While it lacks a proper treatment of persistent data, it demonstrates that a wide variety of database structures can be cleanly represented in a polymorphic programming language.

[1]  Atsushi Ohori,et al.  A polymorphic record calculus and its compilation , 1995, TOPL.

[2]  David J. DeWitt,et al.  The Object-Oriented Database System Manifesto , 1994, Building an Object-Oriented Database System, The Story of O2.

[3]  Won Kim,et al.  Observations on the ODMG-93 proposal for an object-oriented database language , 1994, SGMD.

[4]  Dan Suciu,et al.  Comprehension syntax , 1994, SGMD.

[5]  Xavier Leroy,et al.  Polymorphism by name for references and continuations , 1993, POPL '93.

[6]  Limsoon Wong,et al.  Naturally Embedded Query Languages , 1992, ICDT.

[7]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[8]  Peter Buneman,et al.  Structural Recursion as a Query Language , 1992, DBPL.

[9]  Peter Buneman,et al.  A Type System that Reconsiles Classes and Extents , 1992, DBPL.

[10]  Atsushi Ohori,et al.  A compilation method for ML-style polymorphic record calculi , 1992, POPL '92.

[11]  Didier Rémy,et al.  Typing record concatenation for free , 1992, POPL '92.

[12]  Peter Buneman,et al.  Using Powerdomains to Generalize Relational Databases , 1991, Theor. Comput. Sci..

[13]  Andrew W. Appel,et al.  Standard ML of New Jersey , 1991, PLILP.

[14]  Val Tannen,et al.  Logical and Computational Aspects of Programming with Sets/Bags/Lists , 1991, ICALP.

[15]  Serge Abiteboul,et al.  Objects and views , 1991, SIGMOD '91.

[16]  M. Abadi,et al.  Dynamic typing in a statically typed language , 1991, TOPL.

[17]  Neil Immerman,et al.  The expressiveness of a family of finite set languages , 1991, PODS '91.

[18]  Xavier Leroy,et al.  Polymorphic type inference and assignment , 1991, POPL '91.

[19]  Benjamin C. Pierce,et al.  A record calculus based on symmetric concatenation , 1991, POPL '91.

[20]  John C. Mitchell,et al.  Type Systems for Programming Languages , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[21]  Philip Wadler,et al.  Comprehending monads , 1990, Mathematical Structures in Computer Science.

[22]  Serge Abiteboul,et al.  Method schemas , 1990, PODS.

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

[24]  Peter Buneman,et al.  Can Object-Oriented Databases be Statically Typed? , 1989, DBPL.

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

[26]  Atsushi Ohori,et al.  A simple semantics for ML polymorphism , 1989, FPCA.

[27]  Wayne Snyder,et al.  Complete Sets of Transformations for General E-Unification , 1989, Theor. Comput. Sci..

[28]  Peter Buneman,et al.  Static type inference for parametric classes , 1989, OOPSLA '89.

[29]  Mitchell Wand,et al.  Type inference for record concatenation and multiple inheritance , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[30]  Peter Buneman,et al.  Database programming in Machiavelli—a polymorphic language with static type inference , 1989, SIGMOD '89.

[31]  Luca Cardelli,et al.  Operations on records , 1989, Mathematical Structures in Computer Science.

[32]  Martín Abadi,et al.  Dynamic typing in a statically-typed language , 1989, POPL '89.

[33]  Didier Rémy,et al.  Type checking records and variants in a natural extension of ML , 1989, POPL '89.

[34]  Atsushi Ohori,et al.  Semantics of Types for Database Objects , 1988, Theor. Comput. Sci..

[35]  M. Wand,et al.  Corrigendum: complete type interference for simple objects , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[36]  Fernando Vélez,et al.  O2, an object-oriented data model , 1988, SIGMOD '88.

[37]  Peter Buneman,et al.  Type inference in a database programming language , 1988, LISP and Functional Programming.

[38]  David B. MacQueen An implementation of standard ML modules , 1988, LISP and Functional Programming.

[39]  John C. Mitchell,et al.  ML with extended pattern matching and subtypes , 1988, LISP and Functional Programming.

[40]  Patrick Valduriez,et al.  FAD, a Powerful and Simple Database Language , 1987, VLDB.

[41]  Roger King,et al.  Semantic database modeling: survey, applications, and research issues , 1987, CSUR.

[42]  Peter Buneman,et al.  Types and persistence in database programming languages , 1987, CSUR.

[43]  Setrag Khoshafian,et al.  Object identity , 1986, OOPLSA '86.

[44]  Craig Schaffert,et al.  Persistent and Shared Objects in Trellis/Owl , 1986, OODBS.

[45]  David J. DeWitt,et al.  Object and File Management in the EXODUS Extensible Database System , 1986, VLDB.

[46]  Michael Stonebraker,et al.  The design of POSTGRES , 1986, SIGMOD '86.

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

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

[49]  Tomasz Imielinski,et al.  Incomplete Information in Relational Databases , 1984, JACM.

[50]  Lennart Augustsson,et al.  A compiler for lazy ML , 1984, LFP '84.

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

[52]  David Maier,et al.  Making smalltalk a database system , 1984, SIGMOD '84.

[53]  Serge Abiteboul,et al.  IFO: a formal semantic database model , 1987, TODS.

[54]  Gordon D. Plotkin,et al.  An ideal model for recursive polymorphic types , 1984, Inf. Control..

[55]  Bruno Courcelle,et al.  Fundamental Properties of Infinite Trees , 1983, Theor. Comput. Sci..

[56]  Carlo Zaniolo,et al.  Database relations with null values , 1982, J. Comput. Syst. Sci..

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

[58]  Witold Lipski,et al.  On semantic issues connected with incomplete information databases , 1979, ACM Trans. Database Syst..

[59]  Brian A. Wichmann,et al.  Rationale for the design of the Ada programming language , 1979, SIGP.

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

[61]  Joachim W. Schmidt,et al.  Some high-level language constructs for data of type relation , 1977, SIGMOD '77.

[62]  Gordon D. Plotkin,et al.  Call-by-Name, Call-by-Value and the lambda-Calculus , 1975, Theor. Comput. Sci..

[63]  John C. Reynolds,et al.  Towards a theory of type structure , 1974, Symposium on Programming.

[64]  R. Hindley The Principal Type-Scheme of an Object in Combinatory Logic , 1969 .

[65]  Richard C. H. Connor,et al.  The Napier88 Reference Manual , 1997 .

[66]  Limsoon Wong,et al.  Querying Nested Collections , 1994 .

[67]  M PaulHudakEt,et al.  Report on the programming language haskell: a non-strict , 1992 .

[68]  Al Stevens,et al.  C programming , 1990 .

[69]  Carl A. Gunter,et al.  In handbook of theoretical computer science , 1990 .

[70]  Robin Milner,et al.  Definition of standard ML , 1990 .

[71]  Peter Buneman,et al.  A study of semantics, types and languages for databases and object-oriented programming , 1989 .

[72]  Robin Milner,et al.  The definition of standard ML Version 2: LFCS report ECS-LFCS-88-62 , 1988 .

[73]  M. Tofte Operational Semantics and Polymorphic Type Inference , 1988 .

[74]  Robin Milner,et al.  The definition of standard ML, Version 3 , 1988 .

[75]  Mitchell Wand,et al.  Complete Type Inference for Simple Objects , 1987, LICS.

[76]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[77]  Bernard Robinet,et al.  Combinators and functional programming languages : Thirteenth Spring School of the LITP, Val d'Ajol, France, May 6-10, 1985, proceedings , 1986 .

[78]  David B. MacQueen Using dependent types to express modular structure , 1986, POPL '86.

[79]  D. A. Turner,et al.  Miranda: A Non-Strict Functional language with Polymorphic Types , 1985, FPCA.

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

[81]  Joachim Biskup,et al.  A Formal Approach to Null Values in Database Relations , 1979, Advances in Data Base Theory.

[82]  Niklaus Wirth,et al.  Modula: A language for modular multiprogramming , 1977, Softw. Pract. Exp..

[83]  J. Girard Une Extension De ĽInterpretation De Gödel a ĽAnalyse, Et Son Application a ĽElimination Des Coupures Dans ĽAnalyse Et La Theorie Des Types , 1971 .

[84]  J. A. Robinson,et al.  A Machine-Oriented Logic Based on the Resolution Principle , 1965, JACM.

[85]  P. Buneman,et al.  Scholarlycommons Polymorphism and Type Inference in Database Programming Polymorphism and Type Inference in Database Programming Polymorphism and Type Inference in Database Programming Ms-cis-90-64 Logic & Computation 23 Polymorphism and Type Inference in Database Programming , 2022 .