Difference between revisions of "Extensible record"

From HaskellWiki
Jump to navigation Jump to search
m (added dead link note)
Line 14: Line 14:
 
* [[Grapefruit]] contains the package grapefruit-records which implements a record system in Haskell with GHC extensions. This record system allows field selection and dropping of fields using pattern matching. It also supports defaulting.
 
* [[Grapefruit]] contains the package grapefruit-records which implements a record system in Haskell with GHC extensions. This record system allows field selection and dropping of fields using pattern matching. It also supports defaulting.
 
* [http://www.informatik.tu-cottbus.de/~jeltsch/research/ppdp-2010-paper.pdf Generic Record Combinators with Static Type Checking] describes a record system with several novel features, which is provided by the [http://hackage.haskell.org/package/records records package]. It is derived from the record system of [[Grapefruit]].
 
* [http://www.informatik.tu-cottbus.de/~jeltsch/research/ppdp-2010-paper.pdf Generic Record Combinators with Static Type Checking] describes a record system with several novel features, which is provided by the [http://hackage.haskell.org/package/records records package]. It is derived from the record system of [[Grapefruit]].
  +
* The extensible-data package includes extensible records. <!-- sorry, the CAPTCHA is impossible to read. -->
   
 
== Applications ==
 
== Applications ==

Revision as of 21:03, 22 February 2012

Proposals, implementations can be found on the FirstClassLabels page of Haskell' Wiki.

Papers and libraries

Applications

Declarative database management

Such systems can achieve more type safety (compared to direct SQL handling). They usually formulate a relational algebra concept in a declarative language.

HaskellDB

A problem where some concepts of extensible records could be useful is described in the HaskellDB project. More precisely, the problem is described in the paper downloadable from

HaskellDB uses its own extensible record system, but see also HaskellDB#Future.

CoddFish

CoddFish is another declarative, type safe database system. As for extensible record system, it uses HList --- a Haskell library for strongly typed heterogeneous collections.

Functional Reactive Programming

FRP often makes it necessary to deal with very large tuples as arrow inputs and outputs. For example, a GUI component would receive the behavior of all its writeable properties as its input. Extensible records can therefore make FRP more usable, especially if they provide defaulting.

Grapefruit

Grapefruit uses extensible records which support pattern matching and defaulting for functional reactive GUI programming.

Related concepts

Dependent type -- as an explanation for its relatedness here, see Why Dependent Types Matter written by Thorsten Altenkirch, Conor McBride, James McKinna -- or see at least its Conclusions section (section 8, pages 18--19).

Type arithmetic seems to me also a way yielding some tastes from dependent type theory.

Relational algebra implementations usually use extensible records.