m |
|
| (13 intermediate revisions not shown.) |
| Line 2: |
Line 2: |
| | == Introduction == | | == Introduction == |
| | | | |
| - | A [[combinator]] library for declarative, type safe database management. A domain specific embedded language, containing the concept of [[extensible record]] and a special Query [[monad]] (among other powerful ideas, see [[#Related concepts]]). | + | A [[combinator]] library for declarative, type safe database management. All queries and operations can be expressed in Haskell. No SQL need be written! |
| | | | |
| - | All the queries and operations are completely expressed within Haskell, no embedded (SQL) commands are needed.
| + | While [https://github.com/m4dc4p/haskelldb HaskellDB is on GitHub], [http://hackage.haskell.org/package/haskelldb Hackage] hosts the [http://hackage.haskell.org/package/haskelldb latest release of HaskellDB]. |
| | | | |
| - | == Homes == | + | ==== Archived Information ==== |
| | | | |
| - | === [http://www.haskell.org/haskellDB/index.html Daan Leijen's original version] ===
| + | Archive information from this page can be found on [[Applications and libraries/Database interfaces/HaskellDB/Archive]]. |
| - | It makes possible to use Haskell's typecheck system for a type-safe, declarative database management -- a combinator library. It can prevent the user even from using multiple labels in the same record, but the price for this: it needs a special extension of Haskell called Trex (providing [[extensible record]]s).
| + | |
| - | | + | |
| - | HaskellDB was originally developed by Daan Leijen, and is described in the paper Domain Specific Embedded Compilers, Daan Leijen and Erik Meijer. 2nd USENIX Conference on Domain-Specific Languages (DSL), Austin, USA, October 1999.
| + | |
| - | | + | |
| - | === [http://haskelldb.sourceforge.net/index.html Chalmers version] ===
| + | |
| - | A student project by Björn Bringert, Anders Höckersten, Conny Andersson, Martin Andersson, Mary Bergman, Victor Blomqvist, Torbjörn Martin.
| + | |
| - | | + | |
| - | It works well with the most common Haskell implementations, because [[extensible record]]s (without check for multiple labels) are implemented in a way which does not need the Trex extension of Haskell.
| + | |
| - | | + | |
| - | See also Björn Bringert's slides [http://www.cs.chalmers.se/~bringert/publ/haskelldb/haskelldb-db-2005.pdf HaskellDB -- Type safe declarative database combinators].
| + | |
| - | | + | |
| - | == Other materials ==
| + | |
| - | | + | |
| - | === ICS Wiki ===
| + | |
| - | [http://abaris.zoo.cs.uu.nl:8080/wiki/ ICS Wiki] is a huge resource of Haskell materials (among others).
| + | |
| - | * [http://abaris.zoo.cs.uu.nl:8080/wiki/pub/Afp/DomainSpecificLanguages/haskelldb.pdf Database programming with HaskellDB] -- a PDF file (slides). A webpage containing a link to it (among others): the bottom (attachment part) of [http://abaris.zoo.cs.uu.nl:8080/wiki/Afp/DomainSpecificLanguages the ''Domain Specific Languages'' page of ICS Wiki].
| + | |
| - | * There are other links to HaskellDB materials in the [http://abaris.zoo.cs.uu.nl:8080/wiki/Afp/DomainSpecificLanguages#4_Haskell_DB HaskellDB section of the same page].
| + | |
| - | | + | |
| - | == Future ==
| + | |
| - | | + | |
| - | [http://homepages.cwi.nl/~ralf/HList/ HList --- a Haskell library for strongly typed heterogeneous collections] includes also extensible records. Its relatedness to database programming is described in the articles, see also its [http://hackage.haskell.org/trac/summer-of-code/ticket/33 possible] relatedness to HaskellDB project.
| + | |
| - | | + | |
| - | To explore other declarative, type safe database managament approaches, see [[../CoddFish|CoddFish]]. Also it uses [http://homepages.cwi.nl/~ralf/HList/ HList].
| + | |
| - | | + | |
| - | == Related concepts ==
| + | |
| - | | + | |
| - | Concepts which are concerned by the papers of the two official HaskellDB homes
| + | |
| - | * [[Extensible record]]
| + | |
| - | * [[Phantom type]]
| + | |
| - | * [[Generalised algebraic datatype]]
| + | |
| - | * [[Relational algebra]]
| + | |