Extensible record
Proposals, implementations can be found on the FirstClassLabels page of Haskell' Wiki.
Papers and libraries[edit]
- CTRex Extensible records as a library using closed type families and type literals.
- 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 possible relatedness to HaskellDB project.
- Daan Leijen: First-class labels for extensible rows. See also the description of the Haskell-like language Morrow, it is based on the concepts of the article. And Extensible records with scoped labels: "We describe a natural approach to typing polymorphic and extensible records that is simple, easy to use in practice, and straightforward to implement."
- Simon Peyton Jones and Greg Morrisett: A proposal for records in Haskell
- Mark Jones and Simon Peyton Jones: Lightweight Extensible Records for Haskell
- Mark P. Jones: A prototype implementation of extensible records for Hugs
- Didier Remy's Typing record concatenation for free on Erik Knoop's page
- Benedict R. Gaster, Mark P. Jones: A Polymorphic Type System for Extensible Records and Variants
- Chameleon, a Haskell-like language, see its records [dead link as of 2011-09-15]
- 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.
- Generic Record Combinators with Static Type Checking describes a record system with several novel features, which is provided by the records package. It is derived from the record system of Grapefruit.
Libraries on hackage[edit]
Applications[edit]
Declarative database management[edit]
Such systems can achieve more type safety (compared to direct SQL handling). They usually formulate a relational algebra concept in a declarative language.
HaskellDB[edit]
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
- Chalmers version of HaskellDB (see Papers subsection on Documentation)
- which presupposes reading also paper on the Daan Leijen's original HaskellDB page (see Documentation subpage, PostScript version)
HaskellDB uses its own extensible record system, but see also HaskellDB#Future.
CoddFish[edit]
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[edit]
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[edit]
Grapefruit uses extensible records which support pattern matching and defaulting for functional reactive GUI programming.
Related concepts[edit]
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.