Extensible record: Difference between revisions
EndreyMark (talk | contribs) m (→Related concepts: links to Type arithmetic) |
(addition of Grapefruit item and FRP section) |
||
Line 12: | Line 12: | ||
* Benedict R. Gaster, Mark P. Jones: [http://citeseer.ist.psu.edu/gaster96polymorphic.html A Polymorphic Type System for Extensible Records and Variants] | * Benedict R. Gaster, Mark P. Jones: [http://citeseer.ist.psu.edu/gaster96polymorphic.html A Polymorphic Type System for Extensible Records and Variants] | ||
* [http://www.comp.nus.edu.sg/~sulzmann/chameleon/ Chameleon], a Haskell-like language, see its [http://www.comp.nus.edu.sg/~sulzmann/chameleon/download/haskell.html#record records] | * [http://www.comp.nus.edu.sg/~sulzmann/chameleon/ Chameleon], a Haskell-like language, see its [http://www.comp.nus.edu.sg/~sulzmann/chameleon/download/haskell.html#record records] | ||
* [[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. | |||
== Applications == | == Applications == | ||
Line 31: | Line 32: | ||
[[Libraries and tools/Database interfaces/CoddFish|CoddFish]] is another declarative, type safe database system. As for extensible record system, it uses [http://homepages.cwi.nl/~ralf/HList/ HList --- a Haskell library for strongly typed heterogeneous collections]. | [[Libraries and tools/Database interfaces/CoddFish|CoddFish]] is another declarative, type safe database system. As for extensible record system, it uses [http://homepages.cwi.nl/~ralf/HList/ HList --- a Haskell library for strongly typed heterogeneous collections]. | ||
=== Functional Reactive Programming === | |||
[[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. | |||
== Related concepts == | == Related concepts == |
Revision as of 23:24, 31 January 2008
Proposals, implementations can be found on the FirstClassLabels page of Haskell' Wiki.
Papers and libraries
- 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
- 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.
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
- 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
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.
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.