HaskRel: 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.
[Skip to Readme]
|Versions [RSS]||0.1.0.0, 0.1.0.1, 0.1.0.2|
|Dependencies||base (>=4.8 && <4.9), containers (>=0.5 && <0.6), directory (>=1.2 && <1.3), ghc-prim (>=0.4 && <0.5), HList (>=0.4 && <0.5), tagged (>=0.8 && <0.9) [details]|
|Copyright||Thor Michael Støre 2015|
|Author||Thor Michael Støre|
|Source repo||head: git clone https://github.com/thormick/HaskRel|
|Uploaded||by thormick at 2015-11-25T19:31:54Z|
|Downloads||2561 total (8 in the last 30 days)|
|Rating||(no votes yet) [estimated by Bayesian average]|
|Status||Docs uploaded by user
Build status unknown [no reports yet]