2003
DOI: 10.1145/944746.944719
|View full text |Cite
|
Sign up to set email alerts
|

Dependency-style generic haskell

Abstract: Generic Haskell is an extension of Haskell that supports the construction of generic programs. During the development of several applications, such as an XML editor and compressor, we encountered a number of limitations with the existing (Classic) Generic Haskell language, as implemented by the current Generic Haskell compiler. Specifically, generic definitions become disproportionately more difficult to write as their complexity increases, such as when one generic function uses another, because recursion is i… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
10
0

Year Published

2004
2004
2021
2021

Publication Types

Select...
3
3
2

Relationship

3
5

Authors

Journals

citations
Cited by 9 publications
(10 citation statements)
references
References 23 publications
(20 reference statements)
0
10
0
Order By: Relevance
“…User-defined type classes cannot take advantage of deriving. To address this limitation, there have been a number of proposals for experimental libraries and extensions to Haskell, such as Polytypic Programming (PolyP) [18], Generic Haskell [3,24], Derivable type classes [11], the Typeable type class (with the "Scrap your Boilerplate Library" [21,22,23]), preprocessors such as DrIFT [6] and Template Haskell [30], and various encodings of representation types [39,5,13]. These proposals each have their benefits, but none has emerged as a clearly better solution.…”
Section: Deriving Type-indexed Operationsmentioning
confidence: 99%
“…User-defined type classes cannot take advantage of deriving. To address this limitation, there have been a number of proposals for experimental libraries and extensions to Haskell, such as Polytypic Programming (PolyP) [18], Generic Haskell [3,24], Derivable type classes [11], the Typeable type class (with the "Scrap your Boilerplate Library" [21,22,23]), preprocessors such as DrIFT [6] and Template Haskell [30], and various encodings of representation types [39,5,13]. These proposals each have their benefits, but none has emerged as a clearly better solution.…”
Section: Deriving Type-indexed Operationsmentioning
confidence: 99%
“…We specify the traversal operation using the polytypic programming extension of Haskell: Generic Haskell [14]. Every type, except certain predefined/basic types as Int, has a generic representation using only sums, products, and units.…”
Section: Polytypic Traversalsmentioning
confidence: 99%
“…Polytypic examples use Generic Haskell [14], the generic programming extension for Haskell. The code can be downloaded from http://www.cs.ru.nl/A.vanWeelden/bi-arrows/.…”
Section: Introductionmentioning
confidence: 99%
“…(empty (emptyT rb))) Inr r → PlusCase (Pair (empty (emptyT ra)) (single rb r v))) prod ra rb = Single (prod (emptyT ra) (emptyT rb)) (λi v → case i of Prod x y → ProdCase (single ra x (single rb y v))) data ra iso iso2 = Single (data (emptyT ra) iso iso2) (λi v → to iso2 (single ra (from iso i) v)) The idea of dependencies is motivated by Dependency-Style Generic Haskell [26,27]. In this version of Generic Haskell, the type system reflects the uses of generic functions in the definitions by keeping track of constraints that identify such uses.…”
Section: Triesmentioning
confidence: 99%
“…Furthermore, Generic Haskell features generic types and generic function customisation (which were not present in PolyP). Dependency-Style Generic Haskell [26,27] introduces a rather complex type system that keeps track of dependencies on generic function calls. The need for this sophisticated type system is a consequence of a model for generic programming that allows generic function customisation.…”
Section: Related Workmentioning
confidence: 99%