Generic Haskell is an extension of Haskell that supports the construction of generic programs. These lecture notes discuss three advanced generic programming applications: generic dictionaries, compressing XML documents, and the zipper: a data structure used to represent a tree together with a subtree that is the focus of attention, where that focus may move left, right, up or down the tree. When describing and implementing these examples, we will encounter some advanced features of Generic Haskell, such as type-indexed data types, dependencies between and generic abstractions of generic functions, adjusting a generic function using a default case, and generic functions with a special case for a particular constructor.
|
799
|
A universal algorithm for sequential data compression
– Ziv, Lempel
- 1977
|
|
503
|
The Art of Computer Programming, Volume 3: Sorting and Searching
– Knuth
- 1998
|
|
250
|
Functional programming with bananas, lenses, envelopes and barbed wire
– Meijer, Fokkinga, et al.
- 1991
|
|
156
|
Purely functional data structures
– Okasaki
- 1998
|
|
129
|
XMill: an efficient compressor for XML data
– Liefke, Suciu
- 2000
|
|
116
|
XDuce: A typed XML processing language
– Hosoya, Pierce
- 2000
|
|
100
|
Data structures and program transformation
– Malcolm
- 1990
|
|
83
|
A new approach to generic functional programming
– Hinze
|
|
83
|
Polytypic values possess polykinded types. Science of computer programming
– Hinze
- 2002
|
|
77
|
Generic programming — an introduction
– Backhouse, Jansson, et al.
- 1999
|
|
73
|
Algebraic Data Types and Program Transformation
– Malcolm
- 1990
|
|
70
|
die gegenseitige Lage gleicher Teile gewisser Zeichenreihen, Norske vid
– Thue, Uber
- 1977
|
|
58
|
Compressing XML with multiplexed hierarchical PPM models
– Cheney
- 2001
|
|
56
|
Jedi: Extracting and Synthesizing Information from the Web
– Huck, Fankhauser, et al.
- 1998
|
|
54
|
XGRIND: A query-friendly XML compressor
– Tolani, Haritsa
- 2002
|
|
51
|
Generic haskell: practice and theory
– Hinze, Jeuring
- 2003
|
|
47
|
XML: Generic combinators or type-based translation
– Haskell
- 1999
|
|
43
|
Type-indexed data types
– Hinze, Jeuring, et al.
|
|
43
|
The zipper
– Huet
- 1997
|
|
42
|
XMλ - A Functional Language for Constructing and Manipulating XML Documents
– Meijer, Shields
- 2000
|
|
41
|
Scrap your boilerplate: A practical approach to generic programming
– Lämmel, Jones, et al.
- 2003
|
|
39
|
Millau: An encoding format for efficient representation and exchange of XML documents over the WWW
– Girardot, Sundaresan
- 2000
|
|
39
|
Comparing hierarchical data in external memory
– Chawathe
- 1999
|
|
34
|
Source encoding using syntactic information source models
– Cameron
- 1988
|
|
32
|
Generic Haskell, Specifically
– Clarke, Löh
- 2002
|
|
29
|
The Generic Haskell user’s guide
– Clarke, Hinze, et al.
- 2001
|
|
29
|
Type-indexed rows
– SHIELDS, E
|
|
28
|
Generic programs and proofs
– Hinze
|
|
28
|
Polytypic pattern matching
– Jeuring
- 1995
|
|
22
|
Generalizing generalized tries
– Hinze
|
|
21
|
Adaptive compression of syntax trees and iterative dynamic code optimization: Two basic technologies for mobile-object systems
– Franz
- 1997
|
|
20
|
Bytecode compression via profiled grammar rewriting
– Evans, Fraser
- 2001
|
|
20
|
Polytypic data conversion programs
– Jansson, Jeuring
|
|
18
|
Polytypic compact printing and parsing
– Jansson, Jeuring
- 1999
|
|
16
|
The derivative of a regular type is its type of one-hole contexts. Unpublished manuscript
– McBride
- 2001
|
|
14
|
Fast mergeable integer maps
– Okasaki, Gill
- 1998
|
|
13
|
Testing and tracing lazy functional programs using Quickcheck and Hat
– Claessen, Runciman, et al.
- 2003
|
|
12
|
A framework for polytypic programming on terms, with an application to rewriting
– Jansson, Jeuring
- 2000
|
|
11
|
Functional pearl: Polytypic unification
– Jansson, Jeuring
- 1998
|
|
10
|
Artem Alimarine, Jan Tretmans and Rinus Plasmeijer: Gast: Generic Automated Software Testing
– Koopman
- 2002
|
|
9
|
A generalization of the trie data structure
– Connelly, Morris
- 1995
|
|
8
|
Arithmetic coding with folds and unfolds
– Bird, Gibbons
- 2003
|
|
8
|
A framework for developing generic XML Tools
– Hagg
- 2002
|
|
8
|
Generic adaptive syntax-directed compression for mobile code
– Stork, Haldar, et al.
- 2000
|
|
6
|
A semistructured monad for semistructured data
– Fernandez, Siméon, et al.
- 2001
|
|
5
|
Conor McBride. Derivatives of containers
– Abbott, Altenkirch, et al.
- 2003
|
|
5
|
The WWW home page for polytypic programming. Available from http://www.cs.chalmers.se/~patrikj/poly
– Jansson
- 2001
|
|
5
|
A technical overview of Generic Haskell
– Wit
- 2002
|
|
5
|
Free XML tools and software. Available from http://www.garshol.priv. no/download/xmltools
– Garshol
|
|
4
|
Semantic lossy compression of XML data
– Cannataro, Carelli, et al.
- 2001
|