HaskRel-0.1.0.1: HaskRel, Haskell as a DBMS with support for the relational algebra
HaskRel aims to define those elements of the relational theory of database management that Haskell can accommodate, thus enabling Haskell (or more precisely GHC) in its own right as a DBMS with first-class support for those parts of the relational model. It does not qualify as a proper RDBMS since it as-is only defines the relational algebra, relational variables and relational assignment. It does not define the relational calculus, views, constraints and transactions (beyond the fundamental requirement that the tuples of relations are to be unique), certain operators like relation valued aggregate operators, nor a few minor or even deprecated operators such as DIVIDE. The implemented parts are decently complete even if there are major implementation shortcomings that prevent this from being practically usable as an actual DBMS.
I refer to it as "first-class" since the types of the relational model are first-class types to Haskell, and the Haskell type system is able to induce the type resulting of relational expressions (for instance that a natural join of two relations results in a relation with a heading that is the setwise union of the headings of the original relations).
The HaskRel library
Not all modules of this library are relevant to gain an understanding of how it functions, the next part to go to at this point is Database.HaskRel.RDBMS, and the modules it reexports. See also README.md.
Modules
- Database
- HaskRel
- Database.HaskRel.FWTabulation Presentation of tables in a two-dimensional fixed-width font form.
- Database.HaskRel.HFWTabulation Presentation of HList values in a two-dimensional fixed-width font form.
- Database.HaskRel.Order Ordering functions
- Database.HaskRel.RDBMS A re-export of the modules that form the HList record based HaskRel library
- Relational
- Database.HaskRel.Relational.Algebra Relational algebra, including supporting functions
- Database.HaskRel.Relational.Assignment Relational assignment
- Database.HaskRel.Relational.Definition Definition and presentation of relational objects in terms of Haskell and HList records
- Database.HaskRel.Relational.Expression Support for relational expressions
- Database.HaskRel.Relational.Unicode Functions pertaining to relational theory or set theory named with unicode characters
- Database.HaskRel.Relational.Variable Relation variable definition and support functions
- Database.HaskRel.Support Predicates and aggregates useful to relational querying
- HaskRel