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 nite relations to nite 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, e cient programs for transitive closure and we are also able to write programs that move out of sets, and then perhaps back to sets, as long...
Val Tannen, Peter Buneman, Shamim A. Naqvi