Types and persistence in database programming languages
ACM Computing Surveys (CSUR)
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A simple semantics for ML polymorphism
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
A record calculus based on symmetric concatenation
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Polymorphism and type inference in database programming
ACM Transactions on Database Systems (TODS)
Foundation for object/relational databases: the third manifesto
Foundation for object/relational databases: the third manifesto
Type inference in the polymorphic relational algebra
PODS '99 Proceedings of the eighteenth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems
An introduction to database systems (7th ed.)
An introduction to database systems (7th ed.)
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 2009 ACM symposium on Applied Computing
Eliminating the XML overhead in embedded XML languages
Proceedings of the 28th Annual ACM Symposium on Applied Computing
Hi-index | 0.00 |
A database programming language is a programming language extended with database operations. In this paper we extend a core functional language with explicitly labeled tuples and the operations of the relational algebra. We present the functional database programming language Neon along with a polymorphic type inference algorithm that can infer a 'type formula', that is, a type together with type constraints, for any valid Neon program. Neon has the following salient features: (1) let-bound polymorphism, (2) explicitly labeled tuples, (3) polymorphic tuple operations, notably extension, (4) sets and set operations, and (5) polymorphic relational algebra operations, notably natural join. To type-check a Neon program the standard Damas-Milner type inference algorithm needs to be extended so that it collects constraints on type variables imposed by tuple and relational operations. The type inference algorithm has been successfully implemented in Haskell.