Results 1 -
2 of
2
Structural Recursion as a Query Language
- In Proceedings of 3rd International Workshop on Database Programming Languages
, 1991
"... We propose a programming paradigm that tries to get close to both the semantic simplicity of relational algebra, and the expressive power of unrestricted programming languages. Its main computational engine is structural recursion on sets. All programming is done within a "nicely" typed lambda calcu ..."
Abstract
-
Cited by 100 (9 self)
- Add to MetaCart
We propose a programming paradigm that tries to get close to both the semantic simplicity of relational algebra, and the expressive power of unrestricted programming languages. Its main computational engine is structural recursion on sets. All programming is done within a "nicely" typed lambda calculus, as in Machiavelli [OBB89]. A guiding principle is that how queries are implemented is as important as whether they can be implemented. As in relational algebra, the meaning of any relation transformer is guaranteed to be a total map taking finite relations to finite relations. A naturally restricted class of programs written with structural recursion has precisely the expressive power of the relational algebra. The same programming paradigm scales up, yielding query languages for the complex-object model [AB89]. Beyond that, there are, for example, efficient programs for transitive closure and we are also able to write programs that move out of sets, and then perhaps back to sets, as l...
A Type System that Reconciles Classes and Extents
- In 3rd International Workshop on Database Programming Languages
"... We present a type system that naturally couples two dierent, and apparently contradictory, notions of inheritance that occur in object-oriented databases. To do this we distinguish between the type and a kind of a value. A type describes the entire structure of a value, while a kind describes only ..."
Abstract
-
Cited by 12 (4 self)
- Add to MetaCart
We present a type system that naturally couples two dierent, and apparently contradictory, notions of inheritance that occur in object-oriented databases. To do this we distinguish between the type and a kind of a value. A type describes the entire structure of a value, while a kind describes only the availability of certain elds or methods. This distinction allows us to manipulate heterogeneous collections (collections of values with diering types) in a statically type-checked language. Moreover, the type system is polymorphic and types may be inferred using an extension of the technique used in ML. This means that it is easy to express general-purpose operations for the manipulation of heterogeneous collections. We believe that this system not only provides a natural approach to static type-checking in object-oriented databases; it also oers a technique for dealing with external databases in a statically typed language. 1 Introduction The term \inheritance" is used in ...

