Generalised algebraic datatype

From HaskellWiki
Revision as of 11:49, 8 March 2006 by EndreyMark (talk | contribs) (New page on genaralised abstract datatypes, referring to the original HaskellDB paper as a case study, Phantom types, relatedness to Dependent types. More general ,terms in other terms')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

General

Example

An example: it seems to me that genaralised 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. 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.