The Generic Haskell user's guide, Version 1.60 - Diamond release
Andres Löh, Johan Jeuring, Alexey Rodriguez
Abstract
Andres Löh, Johan Jeuring, Alexey Rodriguez
Abstract
Software development often consists of designing datatypes around which functionality is \nadded. Some functionality is datatype specific, whereas other functionality is defined on \nalmost all datatypes in a way that depends only on the structure of the datatype. A function \nthat works on many datatypes in this manner is called a generic (or polytypic) function. \nExamples of generic functionality include editing, pretty-printing or storing a value in a \ndatabase, and comparing two values for equality. \nSince datatypes often change and new datatypes are introduced, we have developed Generic \nH ASKELL, an extension of the functional programming language Haskell [11] that supports \ngeneric definitions, to save the programmer from (re)writing instances of generic functions. \nThe original design of Generic H ASKELL is based on work by Ralf Hinze [3]. The current \nrelease is based on recent work by Dave Clarke, Johan Jeuring and Andres L¨oh [10, 9]. It \nextends Haskell with, among other things, a construct for defining type-indexed values. These \nvalues can be specialised to all Haskell datatypes, facilitating wider application of generic \nprogramming than provided by earlier systems such as PolyP [8].
A significance statement is not available in the OpenAlex record.
A contribution statement is not available in the OpenAlex record.
Method details are not available in the OpenAlex metadata.
Findings are not separately available in the OpenAlex metadata.
Limitations are not available in the OpenAlex metadata.
Application details are not available in the OpenAlex metadata.
Software development often consists of designing datatypes around which functionality is \nadded. Some functionality is datatype specific, whereas other functionality is defined on \nalmost all datatypes in a way that depends only on the structure of the datatype. A function \nthat works on many datatypes in this manner is called a generic (or polytypic) function. \nExamples of generic functionality include editing, pretty-printing or storing a value in a \ndatabase, and comparing two values for equality. \nSince datatypes often change and new datatypes are introduced, we have developed Generic \nH ASKELL, an extension of the functional programming language Haskell [11] that supports \ngeneric definitions, to save the programmer from (re)writing instances of generic functions. \nThe original design of Generic H ASKELL is based on work by Ralf Hinze [3]. The current \nrelease is based on recent work by Dave Clarke, Johan Jeuring and Andres L¨oh [10, 9]. It \nextends Haskell with, among other things, a construct for defining type-indexed values. These \nvalues can be specialised to all Haskell datatypes, facilitating wider application of generic \nprogramming than provided by earlier systems such as PolyP [8].
Key concepts: Haskell, Programming language, Generic programming, Computer science, Programmer, Functional programming, Extension (predicate logic), Function (biology)