Difference between revisions of "Applications and libraries/Database interfaces/HaskellDB"

From HaskellWiki
Jump to navigation Jump to search
(Integrating HaskellDB page)
(13 intermediate revisions by 8 users 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!
   
  +
[http://hackage.haskell.org/package/haskelldb Hackage] hosts the [http://hackage.haskell.org/package/haskelldb latest release of HaskellDB]. The project home page can be found at http://trac.haskell.org/haskelldb.
All the queries and operations are completely expressed within Haskell, no embedded (SQL) commands are needed.
 
   
  +
==== Archived Information ====
== Homes ==
 
   
  +
Archive information from this page can be found on [[Applications and libraries/Database interfaces/HaskellDB/Archive]].
=== [http://www.haskell.org/haskellDB/index.html Daan Leijen's original version] ===
 
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]]
 

Revision as of 14:50, 13 September 2010

Introduction

A combinator library for declarative, type safe database management. All queries and operations can be expressed in Haskell. No SQL need be written!

Hackage hosts the latest release of HaskellDB. The project home page can be found at http://trac.haskell.org/haskelldb.

Archived Information

Archive information from this page can be found on Applications and libraries/Database interfaces/HaskellDB/Archive.