Software development often consists of designing datatypes around which functionality is\ud added. Some functionality is datatype specific, whereas other functionality is defined on\ud almost all datatypes in a way that depends only on the structure of the datatype. A function\ud that works on many datatypes in this manner is called a generic (or polytypic) function.\ud Examples of generic functionality include editing, pretty-printing or storing a value in a\ud database, and comparing two values for equality.\ud Since datatypes often change and new datatypes are introduced, we have developed Generic\ud H ASKELL, an extension of the functional programming language Haskell  that supports\ud generic definitions, to save the programmer from (re)writing instances of generic functions.\ud The original design of Generic H ASKELL is based on work by Ralf Hinze . The current\ud release is based on recent work by Dave Clarke, Johan Jeuring and Andres L¨oh [10, 9]. It\ud extends Haskell with, among other things, a construct for defining type-indexed values. These\ud values can be specialised to all Haskell datatypes, facilitating wider application of generic\ud programming than provided by earlier systems such as PolyP 
To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.