# Difference between revisions of "Generalised algebraic datatype"

EndreyMark (talk | contribs) m (Generalised algebraic datatypes moved to Generalised algebraic datatype) |
EndreyMark (talk | contribs) m (Sorry -- of course I meant ,,Generalised algebraic datatype'') |
||

Line 10: | Line 10: | ||

There are other developed tricks with types in [[Type]], and another way to a more general framework in [[Dependent type]]s. The fully dependently typed langage's [http://www.e-pig.org/downloads/epigram-notes.pdf Epigram tutorial] (section 6.1) mentions Haskells GADTs and Epigram's relatedness to Haskell achieved by them. |
There are other developed tricks with types in [[Type]], and another way to a more general framework in [[Dependent type]]s. The fully dependently typed langage's [http://www.e-pig.org/downloads/epigram-notes.pdf Epigram tutorial] (section 6.1) mentions Haskells GADTs and Epigram's relatedness to Haskell achieved by them. |
||

− | The more general problem (representing the terms of a language with the terms of another language) can develop surprising things, e.g. quines (self-replicating or self-representing programs) on [[Combinatory logic]]. |
+ | The more general problem (representing the terms of a language with the terms of another language) can develop surprising things, e.g. ''quines'' (self-replicating or self-representing programs) on [[Combinatory logic]]. |

## Revision as of 21:29, 25 March 2006

# General

- A short descriptions on generalised algebraic datatypes here as GHC language features
- Another description with links on Haskell' wiki

# Example

An example: it seems to me that generalised abstract datatypes can provide a nice solution to a problem described in Daan Leijen and Erik Meijer's paper (see PostScript version) on the original HaskellDB page: making typeful (safe) representation of terms of another language (here: SQL). In this example, the problem has been solved in a funny way with Phantom type (we destroy and rebuild, a nice topic for a myth or scifi where a dreamworld is simulated on top of a previously homogenized world to look like the original?), but solving the problem with GADTs seems to be a more direct way (maybe that's why Simple unification-based type inference for GADTs mentions that they are also called as *first-class phantom types*?)

# Related concepts

There are other developed tricks with types in Type, and another way to a more general framework in Dependent types. The fully dependently typed langage's Epigram tutorial (section 6.1) mentions Haskells GADTs and Epigram's relatedness to Haskell achieved by them.

The more general problem (representing the terms of a language with the terms of another language) can develop surprising things, e.g. *quines* (self-replicating or self-representing programs) on Combinatory logic.