Principles of database and knowledge-base systems, Vol. I
Principles of database and knowledge-base systems, Vol. I
Type inference in a database programming language
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Database programming in Machiavelli—a polymorphic language with static type inference
SIGMOD '89 Proceedings of the 1989 ACM SIGMOD international conference on Management of data
Fundamentals of database systems (2nd ed.)
Fundamentals of database systems (2nd ed.)
Polymorphism and type inference in database programming
ACM Transactions on Database Systems (TODS)
An introduction to database systems (7th ed.)
An introduction to database systems (7th ed.)
Domain specific embedded compilers
Proceedings of the 2nd conference on Domain-specific languages
A relational model of data for large shared data banks
Communications of the ACM
A complete axiomatization for functional and multivalued dependencies in database relations
SIGMOD '77 Proceedings of the 1977 ACM SIGMOD international conference on Management of data
Journal of Functional Programming
Faking it Simulating dependent types in Haskell
Journal of Functional Programming
Efficient development of data migration transformations
SIGMOD '04 Proceedings of the 2004 ACM SIGMOD international conference on Management of data
Student paper: HaskellDB improved
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Functional pearl: implicit configurations--or, type classes reflect the values of types
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Strongly typed heterogeneous collections
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Theory of Relational Databases
Theory of Relational Databases
ACM Transactions on Programming Languages and Systems (TOPLAS)
Type-safe two-level data transformation
FM'06 Proceedings of the 14th international conference on Formal Methods
Transformation of structure-shy programs: applied to XPath queries and strategic functions
Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
A type-level approach to component prototyping
International workshop on Synthesis and analysis of component connectors: in conjunction with the 6th ESEC/FSE joint meeting
Attribute grammars fly first-class: how to do aspect oriented programming in Haskell
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Ur: statically-typed metaprogramming with type-level record computation
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Transformation of structure-shy programs with application to XPath queries and strategic functions
Science of Computer Programming
Just do it while compiling!: fast extensible records in haskell
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
Hi-index | 0.00 |
Haskell's type system with multi-parameter constructor classes and functional dependencies allows static (compile-time) computations to be expressed by logic programming on the level of types. This emergent capability has been exploited for instance to model arbitrary-length tuples (heterogeneous lists), extensible records, functions with variable length argument lists, and (homogenous) lists of statically fixed length (vectors).We explain how type-level programming can be exploited to define a strongly-typed model of relational databases and operations on them. In particular, we present a strongly typed embedding of a significant subset of SQL in Haskell. In this model, meta-data is represented by type-level entities that guard the semantic correctness of database operations at compile time.Apart from the standard relational database operations, such as selection and join, we model functional dependencies (among table attributes), normal forms, and operations for database transformation. We show how functional dependency information can be represented at the type level, and can be transported through operations. This means that type inference statically computes functional dependencies on the result from those on the arguments.Our model shows that Haskell can be used to design and prototype typed languages for designing, programming, and transforming relational databases.