scispace - formally typeset
Search or ask a question

Showing papers by "Peter Buneman published in 1989"


Journal ArticleDOI
01 Jun 1989
TL;DR: Machiavelli is a polymorphically typed programming language in the spirit of ML, but supports an extended method of type inferencing that makes its polymorphism more general and appropriate for database applications.
Abstract: Machiavelli is a polymorphically typed programming language in the spirit of ML, but supports an extended method of type inferencing that makes its polymorphism more general and appropriate for database applications. In particular, a function that selects a field ƒ of a records is polymorphic in the sense that it can be applied to any record which contains a field ƒ with the appropriate type. When combined with a set data type and database operations including join and projection, this provides a natural medium for relational database programming. Moreover, by implementing database objects as reference types and generating the appropriate views — sets of structures with “identity” — we can achieve a degree of static type checking for object-oriented databases.

162 citations



Proceedings ArticleDOI
01 Sep 1989
TL;DR: A static type system is proposed that achieves integration in an ML-like polymorphic language by adding a class construct that allows the programmer to build a hierarchy of classes connected by multiple inheritance declarations.
Abstract: Central features of object-oriented programming are method inheritance and data abstraction attained through hierarchical organization of classes. Recent studies show that method inheritance can be nicely supported by ML style type inference when extended to labeled records. This is based on the fact that a function that selects a field ƒ of a record can be given a polymorphic type that enables it to be applied to any record which contains a field ƒ. Several type systems also provide data abstraction through abstract type declarations. However, these two features have not yet been properly integrated in a statically checked polymorphic type system.This paper proposes a static type system that achieves this integration in an ML-like polymorphic language by adding a class construct that allows the programmer to build a hierarchy of classes connected by multiple inheritance declarations. Moreover, classes can be parameterized by types allowing “generic” definitions. The type correctness of class declarations is statically checked by the type system. The type system also infers a principal scheme for any type correct program containing methods and objects defined in classes.

42 citations


Proceedings Article
01 Dec 1989
TL;DR: The authors now doubt its existence and have come to believe that, where objectoriented and semantic data models are concerned, they must either give up the Quest or substantially modify their view of a type system.
Abstract: Can there be a database programming language with a type system that matches the data model? Can such a language be strongly typed? Can it be statically typed? A static type system for database programming languages is, of course, the Holy Grail of the subject. However we, the authors, who have spent some effort in searching for this venerated object, now doubt its existence and have come to believe that, where objectoriented and semantic data models are concerned, we must either give up the Quest or substantially modify our view of a type system. Worse still, we are not in agreement about which course of action to take.

16 citations


01 Jan 1989
TL;DR: This thesis attempts to construct one such formalism and proposes a programming language that uniformly integrate all of the above features and a prototype implementation of Machiavelli that embodies most of the features presented in this thesis has been done in Standard ML of New Jersey.
Abstract: The purpose of this thesis is to investigate a type system for databases and object-oriented programming and to design a statically typed programming language for these applications. Such a language should ideally have a static type system that supports: (1) polymorphism and static type inference, (2) rich data structures and operations to represent various data models for databases including the relational model and more recent complex object models, (3) central features of object-oriented programming including user definable class hierarchies, multiple inheritance, and data abstraction, (4) the notion of extents and object-identities for object-oriented databases. Without a proper formalism, it is not obvious that the construction of such a type system is possible. This thesis attempts to construct one such formalism and proposes a programming language that uniformly integrate all of the above features. The specific contributions of this thesis include: (1) A simple semantics for ML polymorphism and axiomatization of the equational theory of ML. (2) A uniform generalization of the relational model to arbitrary complex database objects that are constructed by labeled records, labeled variants, finite sets and recursive definition. (3) A framework for semantics of types for complex database objects. (4) The notion of conditional typing schemes that extends Milner's typing scheme for ML to a wide range of complex structures and operations. (5) A formulation of the notion of classes and inheritance in an ML style static type system. (6) The notion of views that enable us to represent object-oriented databases in an ML style static type system. (7) A proposal of a polymorphic programming language, Machiavelli, for databases and object-oriented programming with static type inference. In addition to the above technical contributions, a prototype implementation of Machiavelli that embodies most of the features presented in this thesis has been done in Standard ML of New Jersey.

11 citations


Journal Article
TL;DR: By eliminating a major source of errors in programming on databases – type errors, which proliferate as the complexity of the database increases, it is believed that these properties can be concisely captured in a language that has a more-or-less conventional type system for the representation of data.
Abstract: If a precise definition of object-oriented programming languages is elusive, the confusion surrounding objectoriented databases is even greater. Rather than attempt to give a comprehensive definition of the subject we shall concentrate on a few properties of object-oriented databases that we believe to be of central importance. We want to show that these properties can be concisely captured in a language that has a more-or-less conventional type system for the representation of data, and that achieves its “object-orientedness” by exploiting type inference. The advantage of this approach is that programs are statically checked for type correctness without the programmer having to declare types. By doing this we believe we can eliminate a major source of errors in programming on databases – type errors, which proliferate as the complexity of the database increases. In most object-oriented database systems, type errors are not caught until something goes wrong at run-time, often with disastrous consequences.

7 citations